第十二周課程總結


###上機課實驗:計算器 ####源代碼:

package diyishiba;
import java.awt.*;
import javax.swing.*;
public class Jisuanqi {

	public static void main(String[] args) {
		JFrame jfr=new JFrame("計算器");
		JTextField jte=new JTextField(30);
		JButton jbu11=new JButton("%");
		JButton jbu12=new JButton("sqrt");
		JButton jbu13=new JButton("pow");
		JButton jbu14=new JButton("1/x");
		JButton jbu21=new JButton("CE");
		JButton jbu22=new JButton("C");
		JButton jbu23=new JButton("<--");
		JButton jbu24=new JButton("/");
		JButton jbu31=new JButton("7");
		JButton jbu32=new JButton("8");
		JButton jbu33=new JButton("9");
		JButton jbu34=new JButton("*");
		JButton jbu41=new JButton("4");
		JButton jbu42=new JButton("5");
		JButton jbu43=new JButton("6");
		JButton jbu44=new JButton("-");
		JButton jbu51=new JButton("1");
		JButton jbu52=new JButton("2");
		JButton jbu53=new JButton("3");
		JButton jbu54=new JButton("+");
		JButton jbu61=new JButton("+/-");
		JButton jbu62=new JButton("0");
		JButton jbu63=new JButton(".");
		JButton jbu64=new JButton("=");
		
		
		jfr.setLayout(null);
		jte.setBounds(10, 10, 333, 80);
		jbu11.setBounds(10, 90, 83, 40);
		jbu12.setBounds(93, 90, 83, 40);
		jbu13.setBounds(176, 90, 83, 40);
		jbu14.setBounds(259, 90, 83, 40);
		jbu21.setBounds(10, 130, 83, 40);
		jbu22.setBounds(93, 130, 83, 40);
		jbu23.setBounds(176, 130, 83, 40);
		jbu24.setBounds(259, 130, 83, 40);
		jbu31.setBounds(10, 170, 83, 40);
		jbu32.setBounds(93, 170, 83, 40);
		jbu33.setBounds(176, 170, 83, 40);
		jbu34.setBounds(259, 170, 83, 40);
		jbu41.setBounds(10, 210, 83, 40);
		jbu42.setBounds(93, 210, 83, 40);
		jbu43.setBounds(176, 210, 83, 40);
		jbu44.setBounds(259, 210, 83, 40);
		jbu51.setBounds(10, 250, 83, 40);
		jbu52.setBounds(93, 250, 83, 40);
		jbu53.setBounds(176, 250, 83, 40);
		jbu54.setBounds(259, 250, 83, 40);
		jbu61.setBounds(10, 290, 83, 40);
		jbu62.setBounds(93, 290, 83, 40);
		jbu63.setBounds(176, 290, 83, 40);
		jbu64.setBounds(259, 290, 83, 40);
		
		
		
		
		
		
		jfr.add(jte);
		jfr.add(jbu11);
		jfr.add(jbu12);
		jfr.add(jbu13);
		jfr.add(jbu14);
		jfr.add(jbu21);
		jfr.add(jbu22);
		jfr.add(jbu23);
		jfr.add(jbu24);
		jfr.add(jbu31);
		jfr.add(jbu32);
		jfr.add(jbu33);
		jfr.add(jbu34);
		jfr.add(jbu41);
		jfr.add(jbu42);
		jfr.add(jbu43);
		jfr.add(jbu44);
		jfr.add(jbu51);
		jfr.add(jbu52);
		jfr.add(jbu53);
		jfr.add(jbu54);
		jfr.add(jbu61);
		jfr.add(jbu62);
		jfr.add(jbu63);
		jfr.add(jbu64);
		
		
		jfr.setSize(375, 370);
		jfr.setVisible(true);
	}

}

####運行截圖:

###課程總結: ####其他容器: ####一、JPanel ####用途: ####應用:可以將多個組件加入到JPanel中實現復雜的排列。 ####如下圖所示: ####JPanel類的常用方法: 序號|方法|類型|描述 ----|---|----|--- 1|public JPanel()|構造|創建一個默認的JPanel對象,使用流布局管理 2|public JPanel(LayoutManager layout)|構造|創建一個指定布局管理器的JPanel對象 ####例子:

package diyishiba;
import java.awt.*;
import javax.swing.*;
public class JPanelDemo01 {

	public static void main(String[] args) {
		JFrame jfr=new JFrame("窗口");
		JPanel jpa=new JPanel();
		
		jpa.add(new JLabel("一"));
		jpa.add(new JLabel("棵"));
		jpa.add(new JLabel("樹"));
		jpa.add(new JButton("JAVA"));
		jpa.add(new JButton("好"));
		jpa.add(new JButton("難"));
		
		jfr.add(jpa);
		
		jfr.setSize(400, 300);
		jfr.setVisible(true);
	}

}

####運行截圖: ####二、JSplitPane ####用途: ####如下圖所示: ####JSplitPanel類的主要方法及常量 ####例子:

package diyishiba;
import java.awt.*;
import javax.swing.*;
public class JSplitPaneDemo01 {

	public static void main(String[] args) {
		JFrame jfr=new JFrame("窗口");
		JSplitPane jsp=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,new JLabel("這是左窗口"),new JLabel("這是右窗口"));
		JSplitPane jsp1=new JSplitPane(JSplitPane.VERTICAL_SPLIT,jsp,new JLabel("這是下窗口"));
		
		jfr.add(jsp1);
		
		jsp.setDividerLocation(170);
		jsp1.setDividerLocation(130);
		jsp.setOneTouchExpandable(true);
		jsp1.setOneTouchExpandable(true);
		jsp.setDividerSize(3);
		
		
		jfr.setSize(400, 300);
		jfr.setVisible(true);
		
	}

}

####運行截圖: ####三、JTabbedPane #### ####如下圖所示: ####JTabbedPane類的常用方法及常量: ####例子:

package diyishiba;
import java.awt.*;
import javax.swing.*;
public class JTabbedPaneDemo01 {

	public static void main(String[] args) {
		JFrame jfr=new JFrame("窗口");
		JPanel jpa1=new JPanel();
		JPanel jpa2=new JPanel();
		JTabbedPane jta=new JTabbedPane(JTabbedPane.TOP);
		
		
		jpa1.add(new JLabel("常規"));
		jpa2.add(new JLabel("高級"));
		
		
		jta.addTab("常規",jpa1);
		jta.addTab("高級", jpa2);
		jta.addTab("遠程", null);
		
	
		Container con=jfr.getContentPane();
		con.add(jta);
		
		jfr.setSize(400, 300);
		jfr.setVisible(true);
		
	}

}

####運行截圖: ####四、JScrollPane ####定義: ####組成: ####JScrollPane類的常用方法及常量: ####例子:

package diyishiba;
import java.awt.*;
import java.io.File;

import javax.swing.*;
public class JScrollPaneDemo01 {

		public static void main(String[] args) {
			JFrame jfr=new JFrame("窗口");
			String path="G:"+File.separator+"程序員搞笑.jpg";
			ImageIcon ic=new ImageIcon(path);
			JLabel jla=new JLabel(ic);
			JPanel jpa=new JPanel();
			jpa.add(jla);
			JScrollPane jsc=new JScrollPane(jpa,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
			
			jfr.add(jsc);
			jfr.setSize(400, 300);
			jfr.setVisible(true);
		}
    }

####運行截圖: ####五、JDesktopPaneJIntenrnalFrame ####用途: ####規定: ####JDesktopPane類的常用方法: ####JInternalFrame類的常用方法: ####例子:

package diyishiba;
import java.awt.*;
import javax.swing.*;
public class JDesktopPaneDemo01 {

	public static void main(String[] args) {
		JFrame jfr=new JFrame("多窗口");
		jfr.setLayout(new BorderLayout());
		JDesktopPane jde=new JDesktopPane();
		jfr.add(jde,BorderLayout.CENTER);
		for(int i=0;i<3;i++) {
			JInternalFrame jin=new JInternalFrame("內窗口",true,true,true,true);
			JPanel jpa=new JPanel();
			jpa.add(new JLabel("內窗口"+i));
			jin.add(jpa);
			jin.setLocation(35-i*10, 35-i*10);
			jin.pack();
			jin.setVisible(true);
			jde.add(jin);
		}
		jfr.setSize(300, 270);
		jfr.setVisible(true);
	}

}

####運行截圖: ####六、事件處理 ####事件和監聽器: ####如下圖所示: ####Java事件處理流程 ####要先理解事件源與事件監聽器的概念,如下所示: ####處理事件的概念: ####如下所示: ####七、窗體事件 ####定義: ####WindowListener接口的方法: ####例子: ####實現接口

package diyishiba;
import java.awt.event.*;
import java.awt.event.WindowListener;
public class WindowListenerDemo01 implements WindowListener{

	public void windowOpened(WindowEvent e) {
		System.out.println("窗口被打開");
		
	}

	
	public void windowClosing(WindowEvent e) {
		System.out.println("窗口正在被關閉");
		
	}

	@Override
	public void windowClosed(WindowEvent e) {
		System.out.println("窗口被關閉");
		
	}

	@Override
	public void windowIconified(WindowEvent e) {
		System.out.println("窗口最小化");
		
	}

	@Override
	public void windowDeiconified(WindowEvent e) {
		System.out.println("窗口最大化");		
	}

	@Override
	public void windowActivated(WindowEvent e) {
		System.out.println("窗口被選中");
		
	}

	@Override
	public void windowDeactivated(WindowEvent e) {
		System.out.println("窗口沒被選中");
		
	}
	
	
}

####測試類:

package diyishiba;
import java.awt.Color;

import javax.swing.*;
public class Test {

	public static void main(String[] args) {
			JFrame jfr=new JFrame("窗口");
			WindowListenerDemo01 win=new WindowListenerDemo01();
			jfr.addWindowListener(win);
			JPanel jpa=new JPanel();
			jpa.setBackground(Color.GRAY);
			jfr.add(jpa);
			jfr.setSize(400, 300);
			jfr.setVisible(true);
	}

}

####運行截圖: ####八、適配器類: ####定義: ####例子:

package diyishiba;
import java.awt.Color;
import java.awt.event.*;
import javax.swing.*;
public class Test1 {

	public static void main(String[] args) {
			JFrame jfr=new JFrame("窗口");
			jfr.addWindowListener(new WindowAdapter() {
				public void windowClosed(WindowEvent e) {
					System.out.println("窗口被關閉");
				}
				public void windowOpened(WindowEvent e) {
					System.out.println("窗口被打開");
				}
			});
			jfr.setSize(400, 300);
			JPanel jpa=new JPanel();
			jpa.setBackground(Color.BLUE);
			jfr.add(jpa);
			jfr.setVisible(true);
	}

}

####運行截圖: ##問題:發現窗口關閉時並沒有輸出語句。前面那個例子也是這樣,其他的語句都能輸出就是窗口關閉時的語句不能輸出,不知道是哪里出現問題了。還望助教指點下。 ####九、動作事件及監聽處理 ####定義: ####例子:

package diyishiba;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class ActionListenerDemo01 {
		JFrame jfr=new JFrame("窗口");
		JButton jbu=new JButton("顯示");
		JLabel jla=new JLabel();
		JTextField jte=new JTextField(10);
		JPanel jpa=new JPanel();
		public ActionListenerDemo01() {
			Font font=new Font("幼圓",Font.BOLD+Font.ITALIC,28);
			jla.setFont(font);
			jla.setText("等待用戶輸入信息");
			jbu.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					if(e.getSource()==jbu) {
						jla.setText(jte.getText());
					}
					
				}
				
			});
		jfr.setLayout(new GridLayout(2,1));
		jpa.setLayout(new GridLayout(1,2));
		jpa.add(jte);
		jpa.add(jbu);
		jfr.add(jpa);
		jfr.add(jla);
		jfr.pack();
		jfr.setVisible(true);
		}
	public static void main(String[] args) {
		new ActionListenerDemo01();

	}

}

####運行截圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM