組件及事件處理(待續)

Java Swing概述

通過圖形用戶界面(GUI:Graphics User Interface),用戶和程序之間可以方便地進行交互。Java的Swing工具包中包含了許多類來支持GUI設計。如:按鈕、菜單、列表、文本框等組件類,同時它還包含窗口、面板等容器類。
javax.swing包提供了功能更爲強大的用來設計GUI的類。java.awt和javax.swing包中一部分類的層次關係的UML類圖如圖

在這裏插入圖片描述
在學習GUI編程時,必須要很好的掌握兩個概念:容器類和組件類。
javax.swing包中JComponent類是java.awt包中Container類的一個直接子類、是java.awt包中Component類的一個間接子類,學習GUI編程主要是學習掌握使用Component類的一些重要的子類及其使用方法。
以下是GUI編程經常提到的基本知識點 。
(1)Java把Component類的子類或間接子類創建的對象稱爲一個組件.
(2)Java把Container的子類或間接子類創建的對象稱爲一個容器.
(3)可以向容器添加組件。Container類提供了一個public方法:add(),一個容器可以調用這個方法將組件添加到該容器中。
(4)容器調用removeAll()方法可以移掉容器中的全部組件;調用remove(Componentc)方法可以移掉容器中參數c指定的組件。
(5)注意到容器本身也是一個組件,因此可以把一個容器添加到另一個容器中實現容器套。
(6)每當容器添加新的組件或移掉組件時,應當讓容器調用validate()方法,以保證容器中的組件能正確顯示出來
如:
JFrame f=new JFrame();
JButton button=new JButton(“確定”)
f.add(button);
…….
f.remove(button);

窗口

Java提供的JFrame類的實例是一個底層容器,即通常所說的窗口。其他組件必須被添加到底層容器中,以便藉助這個底層容器和操作系統進行信息交互。
JFrame類是Container類的間接子類。當需要一個窗口時,可使用JFrame或其子類創建一個對象。
窗口也是一個容器,可以向窗口添加組件。需要注意的是,窗口默認地被系統添加到顯示器屏幕上,因此不允許將一個窗口添加到另一個容器中。

JFrame常用方法

JFrame構造方法:
JFrame() 創建一個無標題的窗口。
JFrame(String s) 創建標題爲s的窗口。
常用方法:
1)public void setBounds(int a,int b,int width,int height 設置窗口的初始位置是(a,b),即距屏幕左面a個像素、距屏幕上方b個像素;窗口的寬是width,高是height。
2)public void setSize(int width,int height) 設置窗口的大小。
3)public void setLocation(int x,int y) 設置窗口的位置,默認位置是(0,0)。
4)public void setVisible(boolean b) 設置窗口是否可見,窗口默認是不可見的。
5)public void setResizable(boolean b) 設置窗口是否可調整大小,默認可調整大小。
6)public void dispose() 撤消當前窗口,並釋放當前窗口所使用的資源。

7)public void setExtendedState(int state) 設置窗口的擴展狀態.
8)public void setDefaultCloseOperation(int operation) 該方法用來設置單擊窗體右上角的關閉圖標後,程序會做出怎樣的處理。如:EXIT_ON_CLOSE
9)public void setLayout(LayoutManager mgr) 設置此容器的佈局管理器。
10)public Component add(Component comp) 將指定組件追加到此容器的尾部。
11)public void setMenuBar(MenuBar mb) 將此 frame 的菜單欄設置爲指定的菜單欄。
12)public void validate() 使用 validate 方法會使容器再次佈置其子組件。在修改此容器的子組件的時候(在容器中添加或移除組件,或者更改與佈局相關的信息),應該調用上述方法。
用JFrame創建了兩個窗口,程序如下:

package com.GUI;

import javax.swing.*;
import java.awt.*;
public class window1 {
	public static void main(String args[]) {
		JFrame win1=new JFrame("第一個窗口"); //創建窗口標題
		JFrame win2=new JFrame("第二個窗口");
		Container con=win1.getContentPane(); //獲得JFrame的內容面板
		con.setBackground(Color.yellow);  //設置窗口背景色
		win1.setBounds(60,100,188,108);    //設置窗口在屏幕上的位置及大小
		win2.setBounds(260,100,188,108);
		win1.setVisible(true);  //設置窗口可見
		win1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//釋放當前窗口
		
		win2.setVisible(true);
		win2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //退出程序
		
	}
}

在這裏插入圖片描述

菜單條、菜單、菜單項

1.菜單條
JComponent類的子類JMenubar負責創建菜單條,JFrame類有一個將菜單條放置到窗口中的方法:setJMenuBar(JMenuBar bar);該方法將菜單條添加到窗口的頂端。
菜單條JMenuBar類構造方法:JMenuBar(); JMenuBar Mbar=new JMenuBar()
2.菜單
JComponent類的子類JMenu負責創建菜單。
菜單JMenu類構造方法:JMenu() ; JMenu(String s) ; JMenu m=new JMenu();
常用方法:
public void add(JMenuItem item) 向菜單增加由參數item指定的菜單項
public JMenuItem getItem(int n) 得到指定索引處的菜單選項。
public int getItemCount() 得到菜單選項的數目。
3.菜單項
JComponent類的子類JMenuItem負責創建菜單項,JMenuItem類的主要方法有以下幾種:
JMenuItem(String s) 構造有標題的菜單項。
JMenuItem(String text, Icon icon) 構造有標題和圖標的菜單項
public void setAccelerator(KeyStroke keyStroke)爲菜單項設置快捷鍵

創建菜單

package com.GUI;

import javax.swing.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import static javax.swing.JFrame.*;
class WindowMenu extends JFrame{  //JFrame的子類
	JMenuBar menubar;
	JMenu menu,subMenu;
	JMenuItem item1,item2;
	public WindowMenu() {}
	public WindowMenu(String s,int x,int y, int w,int h) {
		init(s);
		setLocation(x,y);
		setSize(w,h);
		setVisible(true);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		
	}
	void init(String s) {
		setTitle(s);
		menubar=new JMenuBar();
		menu= new JMenu("菜單");
		subMenu= new JMenu("軟件項目"); //做爲子菜單添加到menu中
		item1=new JMenuItem("Java話題",new ImageIcon(""));//添加圖標
		item2=new JMenuItem("動畫話題",new ImageIcon(""));
		item1.setAccelerator(KeyStroke.getKeyStroke('A'));  //設置快捷鍵
		item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_DOWN_MASK));
		menu.add(item1);
		menu.addSeparator();//添加橫線分割符號
		menu.add(item2);
		menu.add(subMenu);
		subMenu.add(new JMenuItem("汽車銷售系統 ",new ImageIcon("")));
		subMenu.add(new JMenuItem("農場信息系統 ",new ImageIcon("")));
		menubar.add(menu);
		setJMenuBar(menubar);

	}
}

public class Menu{
	public static void main(String args[]) {
		WindowMenu win=new WindowMenu("帶菜單的窗口",20,30,800,800);
	}
}

在這裏插入圖片描述

常用組件及佈局

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