Java面向對象筆記 • 【第10章 Swing編程初級應用】

全部章節   >>>>


本章目錄

10.1 JFrame窗口容器

10.1.1 Swing介紹

10.1.2 JFrame窗口容器應用

JFrame常用方法

10.1.3 實踐練習

10.2 佈局管理器

10.2.1 FlowLayout流式佈局管理器

FlowLayout構造方法說明

10.2.2 GridLayout網格佈局管理器

GridLayout構造方法說明

10.2.3 BoraderLayout邊框佈局管理器

BorderLayout構造方法說明

10.2.4 實踐練習

10.3 常用控件(一)

10.3.1 JLabel標籤組件

10.3.2 JTextField與JPasswordField標籤組件

10.3.3 JButton按鈕組件

10.3.4 JPanel面板組件

10.3.5 實踐練習

10.4 常用控件(二)

10.4.1 JComboBox選擇框組件

JComboBox常用方法說明

10.4.2 JRadioButton單選按鈕和JCheckBox複選框組件

10.4.3 實踐練習

總結:


10.1 JFrame窗口容器

10.1.1 Swing介紹

  • Swing 是一個爲Java設計的GUI Graphical User Interface,圖形用戶界面)工具包。
  • Swing由純Java實現,不再依賴於本地平臺的GUI,因此可以在所有操作系統平臺上都保持相同的界面外觀
  • 獨立於本平臺的Swing組件稱爲輕量級組件
  • Swing組件位於javax.swing包。
  • Swing組件採用MVCModel-View-Controller,即模型-視圖-控制器)的設計模式,其中模型用於維護各種狀態,視圖是組件可視化的表現,控制器用於對各種事件、組件做出相應的響應。當模型發生改變時,它會通知所有依賴它的視圖,視圖會根據模型數據進行更新。

10.1.2 JFrame窗口容器應用

  • GUI應用程序都需要使用窗體作爲最外層的容器,應用中需要使用的其他控件均直接或間接放在窗體中
  • Swing GUI中,JFrame是一個頂層容器,可以存放其他組件
  • JFrame類包含了許多實用方法,如定義窗口標題、窗體邊框、窗口的大小和位置等。通常通過繼承JFrame類來創建一個窗口

創建窗體兩種方式:

  1. 直接編寫代碼,調用JFrame類的構造方法,這種方式適用於窗體簡單的情況。
  2. 繼承JFrame類。在繼承的類中編寫代碼,對窗體進行詳細的描述,這種方式適用於窗體較複雜的情況

注意:

JFrame類構造方法創建的窗體是不可見的,需要開發人員通過硬編碼的方式,設置窗體的可見性

JFrame類構造方法創建的窗體默認的大小爲0 x 0像素,默認的座標是(0,0),因此在開發中需要設置窗體的大小

JFrame常用方法

方法名

說明

void  setLayout(LayoutManager mg)

設置當前窗體使用的佈局管理器

void setTitleString title

設置當前窗體的標題

void setBounds(int x,int y,int width,

int hight)

設置當前窗體距離桌面座標原點的位置,x代表橫座標,y代表縱座標。以及當前窗體的大小,width代表窗體的寬,height代表窗體的高

void setSize(int width,int height)

設置當前窗體的寬和高

void setVisible(boolean b)

設置當前窗體是否可見,參數值爲true,表示可以見,爲false則表示隱藏當前窗體

void setIconImage(Image image)

設置當前窗體的圖標

Component add(Component c)

將指定組件添加至當前窗體中

示例:創建JFrame窗體

public class JFrameExample {
	public void init(){
		//創建窗體對象
		JFrame frame=new JFrame();
		//修改窗體圖標爲“android.gif”
		ImageIcon ico=new ImageIcon("E://android.gif");
		//設置JFrame窗體的顯示位置和大小
		frame.setBounds(100,100, 450, 300);
		//設置窗體的標題
		frame.setTitle("JFrame窗體");
		//設置窗體的圖標
		frame.setIconImage(ico.getImage());
		//窗體顯示
		frame.setVisible(true);
	}
	public static void main(String[] args) {
		JFrameExample jfe=new JFrameExample();
		jfe.init();
	}
}

10.1.3 實踐練習

 

10.2 佈局管理器

10.2.1 FlowLayout流式佈局管理器

  • 類似流程或文本處理器處理一段文字,它將組件一排一排依次放置
  • 常用JRadioButton單選按鈕或JCheckBox複選框等組件的排列。

FlowLayout構造方法說明

構造方法

說明

FlowLayout()

使用居中方式構造FlowLayout的佈局

FlowLayout(int align)

使用給定對齊方式,且垂直和水平間隔爲5像素

例如,setLayout(new FlowLayout(FlowLayout.LEFT));

FlowLayout(int align,int hgap,int vgap)

使用給定對齊方式,且指定垂直和水平間隔。容器默認居中放置。hgapvgap爲組件之間垂直和水平間隔(單位爲像素)。

例如,setLayout(new FlowLayout(FlowLayout.RIGHT,20,40));

示例: 流式佈局管理器格式放置興趣課程單選按鈕

public class FlowLayExample extends JFrame {
	public FlowLayExample() {
		super("FlowLayout佈局管理器");
	}
	public void init(){
		JRadioButton jrb1=new JRadioButton("音樂"); //創建單選按鈕
		JRadioButton jrb2=new JRadioButton("體育");
		...
		this.add(jrb1);
		this.add(jrb2);
		//創建FlowLayout管理器對象
		FlowLayout fl=new FlowLayout(FlowLayout.RIGHT,5,15);
		//指定JFrame窗體佈局管理器
		this.setLayout(fl);
		this.setSize(300,150);
		this.setVisible(true);	
	}
	public static void main(String[] args) {
		FlowLayExample layExample=new FlowLayExample();
		layExample.init();
	}
}

10.2.2 GridLayout網格佈局管理器

  • 網格佈局管理器即GridLayout佈局管理,其佈局管理格式是將窗體分割成行數×列數的格子狀版面,組件按照由左至右,由上而下的次序排列。

GridLayout構造方法說明

構造方法

說明

GridLayout

構造具有一行一列的Gridlayout的佈局

GridLayout(int rows,int cloumns)

構造指定行數和列數的GridLayout的佈局

GridLayout(int rows,

int cloumns,int hgap,int vgap)

構造指定行數和列數的、各組件之間的相互間隔的GridLayout的佈局

示例:按網格佈局管理器格式放置JButton按鈕

public class GridLayoutExample extends JFrame{
	//創建佈局管理器
	private GridLayout gridLayout=new GridLayout();
	...
	public void init(){
		JButton btn1=new JButton("按鈕1");
		JButton btn2=new JButton("按鈕2");
		...
		//設置窗體的佈局格式
		this.setLayout(gridLayout);
		gridLayout.setColumns(3);//設置列數
		gridLayout.setHgap(5);//設置垂直間距
		gridLayout.setRows(3);//設置行數
		gridLayout.setVgap(5);//設置水平間距
		//依次將標籤、文本框、下拉列表框添加到this中
		this.add(btn1,null);
		this.add(btn2,null);
		...
		//設置窗體可見
		this.setVisible(true);
	}
	...
}

GridLayout網格佈局與FlowLayout流式佈局相同,都會自動管理組件的大小和位置,兩者的不同之處是,網格佈局會盡可能的將組件充滿窗口,而流式佈局則不會。

10.2.3 BoraderLayout邊框佈局管理器

  • BorderLayout的佈局管理器將容器內的空間分爲東、西、南、北、中5個區域,分別用EASTWESTSOUTHNORTHCENTER表示
  • 容器中加入每個組件時,都要指明其放在容器的哪個區域,如果某個區域沒有分配組件,則其他組件可以佔據該區域的控件。

BorderLayout構造方法說明

構造方法

說明

BorderLayout()

構造BorderLayout的佈局

BorderLayout(int hgap,int vgap)

構造組件之間具有指定間隔的BorderLayout佈局

示例:按邊框佈局管理器格式放置JButton按鈕

public void init(){
	//創建JButton對象
	btn1=new JButton("東");
	btn2=new JButton("南");
	btn3=new JButton("西");
	btn4=new JButton("北");
	btn5=new JButton("中");
	BorderLayout bl=new BorderLayout();
	this.getContentPane().setLayout(bl);
	//將5個按鈕分別添加到窗口的不同區域
	this.add(btn1,BorderLayout.EAST);
	this.add(btn2,BorderLayout.WEST);
	this.add(btn3,BorderLayout.SOUTH);
	this.add(btn4,BorderLayout.NORTH);
	this.add(btn5,BorderLayout.CENTER);
	this.setSize(450,300);
	this.setVisible(true);
}

10.2.4 實踐練習

 

10.3 常用控件(一)

10.3.1 JLabel標籤組件

  • JLabel類創建標籤組件,它除了能顯示文字外,還允許添加圖像,且當鼠標移動到標籤位置時,會顯示一段文字提示

示例:JLabel標籤示例

//通過調用父類構造器爲窗體創建名稱
super("JLabel組件窗口");
//設置流式佈局管理器
this.setLayout(new FlowLayout(100,100,100));
//創建圖片ImageIcon對象
Icon icon=new ImageIcon("e://mst.png");
//設置標籤中僅包含文字
label1=new JLabel(icon);
//設置標籤中僅包含文字、圖像水平居中
label2=new JLabel("MStanford");
label2.setIcon(icon);
//設置標籤的提示信息
label1.setToolTipText("只是一個Label標籤");
//添加label1 
this.add(label1);
this.add(label2);
		

10.3.2 JTextField與JPasswordField標籤組件

  • JTextField只能用於輸入單行文本,如果文本的長度超出了控件可以顯示的範圍,其會自動滾動文本。
  • 針對JTextField所有的剪切、複製、粘貼及其快捷鍵的操作都可以自動工作
  • JPasswordField密碼框組件。繼承自JTextField,因此其操作方法與JTextFiled相同

示例:JTextFieldJPasswordField標籤示例

this.setSize(360,230);
//使用空佈局,容器中的組件可通過座標定位
this.setLayout(null);
jLabel1=new JLabel("賬號");
//設置jLabel1的位置,4個參數代表居左、居上,文字的寬、高
jLabel1.setBounds(30,38,80,25);
jLabel2=new JLabel("密碼");
jLabel2.setBounds(30,80,80,25);
//jTextField1的位置4個參數代表居左、居上,文本框的寬、高
jTextField.setBounds(100,40,160,25);
jPasswordField.setBounds(100,80,160,25);
//將組件添加至容器中
this.add(jLabel1);
this.add(jLabel2);
this.add(jTextField);
this.add(jPasswordField);
	

10.3.3 JButton按鈕組件

  • JButton可以設置文字、圖形,還可以設置底色、動態效果

示例:JButton按鈕組件示例

Icon icon1=new ImageIcon("E://sure.png");
Icon icon2=new ImageIcon("E://refresh.jpg");
Icon icon3=new ImageIcon("E://download.jpg");
//創建按鈕,並在按鈕上添加圖標
JButton  button1=new JButton("確定",icon1);
JButton  button2=new JButton("刷新",icon2);
JButton  button3=new JButton("下載",icon3);
 this.add(button1);
this.add(button2);
this.add(button3);
this.setSize(600,200);
this.setVisible(true);	

10.3.4 JPanel面板組件

  • JPanel面板是非常常用的非頂層容器之一,可以將其他控件放在JPanel中,以組成一個子界面
  • 所謂的非頂層容器通常扮演雙重角色,對於添加到其中的控件,其扮演容器的角色對於其要添加進的容器扮演一般控件的角色
  • 通過嵌套使用JPanel,可以搭建出複雜美觀的界面。

示例:JPanel和佈局管理器綜合示例

	public void init(){
		//設置佈局管理器
		GridLayout gl=new GridLayout();
		BorderLayout  bl=new BorderLayout();
		FlowLayout fl=new FlowLayout();
		//創建按鈕
		JButton button1=new JButton("確定");
		JButton button2=new JButton("取消");
		//創建標籤
		JLabel label1=new JLabel("姓名");
		JLabel label2=new JLabel("性別");
		JLabel label3=new JLabel("年齡");
		//創建文本框
		JTextField text1=new JTextField();
		JTextField text2=new JTextField();
		JTextField text3=new JTextField();
		//設置窗口大小
		this.setSize(400,192);
		this.setLayout(bl);
		 //將兩個按鈕放入到jPanel1中,將jPanel1設置爲FlowLayout佈局
		jPanel1.setLayout(fl);
		//將button放置於jPaenl1中
		jPanel1.add(button1);
		jPanel1.add(button2);
		//設置jPanel2爲GridLayout佈局,3行2列的佈局格式
		jPanel2.setLayout(gl);
	  	 gl.setColumns(2);//設置列數
	   	 gl.setHgap(5);//這是垂直間距
	   	 gl.setRows(3);//設置行數
	   	 gl.setVgap(5);//設置水平間距
	    	//依次將標籤、文本框添加到jPanel2中
	   	 jPanel2.add(label1);
	 	   jPanel2.add(text1);
	  	  jPanel2.add(label2);
	   	 jPanel2.add(text2);
	   	 jPanel2.add(label3);
	   	 jPanel2.add(text3);
	   	 //依次將jPanel1、jPanel2添加到窗口的下方和中間位置
	   	 this.add(jPanel1,BorderLayout.SOUTH);
	   	 this.add(jPanel2,BorderLayout.CENTER);
		 …
	}

10.3.5 實踐練習

 

10.4 常用控件(二)

10.4.1 JComboBox選擇框組件

JComboBox下拉列表框組件,特點是將所有選項摺疊收藏,僅顯示前面一個選項或被用戶選中的某一個選項

JComboBox常用方法說明

構造方法

說明

addItem(Object  anObject)

爲下拉列表添加下拉項

setMaximumRowCount(int count)

設置JComboBox顯示的最大行數

示例:使用JComboBox拉顯示國籍信息

//創建下拉列表框對象
jComboBox=new JComboBox();
 //爲列表添加下拉選項
jComboBox.addItem("中國");
jComboBox.addItem("美國");
jComboBox.addItem("德國");
jComboBox.addItem("韓國");
jComboBox.addItem("英國");
//設置下拉列表框最多顯示4行
jComboBox.setMaximumRowCount(4);
//將下拉列表框添加到jPanel中
jPanel.add(jLabel);
jPanel.add(jComboBox);
this.add(jPanel);
this.setSize(300, 200);
this.setVisible(true);


10.4.2 JRadioButton單選按鈕和JCheckBox複選框組件

  • JRadionButton表示單選按鈕
  • ButtonGroup類爲單選按鈕提供多選一功能,在一組單選按鈕中,用戶只能選擇一個單選按鈕,當選擇一個單選按鈕時,此單選按鈕的狀態爲“ON”,其餘單選按鈕的狀態爲OFF
  • JCheckBox表示複選框,一組複選框中可以有多個複選框同時被選中。

使用JRadioButton組件,首先需要創建ButtonGroup對象,然後將創建的JRadioButton組件對象,添加至ButtonGroup對象中。

示例:JRadioButton單選按鈕和JCheckBox複選框組件示例

//創建單選按鈕組對象
private ButtonGroup group=new ButtonGroup();
jLabel=new JLabel("興趣");
jLabe2=new JLabel("性別");
//複選框
box1=new JCheckBox("檯球");
box2=new JCheckBox("籃球");
box3=new JCheckBox("編程");
jLabe2=new JLabel("性別");
//單選按鈕
jbr1=new JRadioButton("男性");
jbr2=new JRadioButton("女性");
//添加單選按鈕到單選按鈕組
group.add(jbr1);
group.add(jbr2);
//添加單選按鈕到窗口
this.add(jLabel);this.add(box1);this.add(box2);
this.add(box3);this.add(jLabe2);this.add(jbr1);this.add(jbr2);
        

10.4.3 實踐練習

 

總結:

Swing是一個爲Java設計的GUIGraphical User Interface,圖形用戶界面)工具包,它由純Java實現,不再依賴於本地平臺的GUI,因此可以在所有操作系統平臺上都保持相同的界面外觀。Swing組件爲輕量級組件

JFrame是一個頂層容器,可以存放其他組件

常見的佈局管理器

FlowLayout流式佈局管理器:類似流程或文本處理器處理一段文字,它將組件一排一排依次放置。

GridLayout網格佈局管理器:其佈局管理格式是將窗體分割成行數×列數的格子狀版面,組件按照由左至右,由上而下的次序排列。

BorderLayout邊框佈局管理器:將容器內的空間分爲東、西、南、北、中5個區域,分別用EASTWESTSOUTHNORTHCENTER表示

Swing常用組件有JLabel標籤、JTextField文本、JPasswordField密碼、JButton按鈕、JPanel面板、JComboBox選擇框JRadioButton單選按鈕、JCheckBox複選框

使用JRadioButton組件,首先需要創建ButtonGroup對象,然後將創建的JRadioButton組件對象,添加至ButtonGroup對象中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章