標籤:javase gui 事件監聽機制
關於Java基礎的文章,我覺得寫得還可以,以前發在了我其它的部落格了,肯定是原創,現在再分享給大家出來。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一、概述
GUI全稱Graphical User Interfaces,譯為圖形使用者戶介面,又稱為圖形使用者介面,GUI指的就是採用圖形方式顯示的電腦操作使用者介面。
不過java在GUI上並沒有太大優勢,java的優勢還是在於網路,這裡作為瞭解即可,就不深入探討了。
實現GUI的有兩個必不可少的條件:組件和事件
java將關於介面的組件封裝為對象,放在了兩個包中:java.Awt和javax.Swing。
------Awt包:Abstract Window Toolkit,即抽象視窗工具包。要調用本地系統方法實現功能,屬重量級控制項。
------Swing包:在AWT的基礎上建立的一套圖形介面系統,其中提供了更多的組件,且完全由java實現,增強了移植性,屬輕量級控制項。
二、awt包
\
1,Container(容器)和Component(組件)的關係
AWT中的兩個核心類是Container(容器)和Component(組件)
java的圖形化使用者介面的最基本組成部分是Component,Component類及其子類的對象用來描述以圖形化方式顯示在螢幕上並能與使用者進行互動的GUI元素,例如:一個按鈕,一個標籤等。
一般的Component對象不能獨立的顯示出來,必須將“放在”某一的Container對象中才可以顯示出來
Container是Component子類,Container子類對象可以“容納”別的Component對象,也可以被當做Component對象添加到其他Container對象中。
Container對象可使用方法add()向其中添加其他Component對象。
如果還不懂的話,沒關係,我再簡單的說
無論容器(container)還是按鈕(button)還是標籤(label)都是組件,而容器中能夠添加其他的組件。
2,Window與pannel
a,Window:其對象表示自由停泊的最上層視窗
b,Panel:其對象可作為容納其它Component對象,但不能獨立存在,必須被添加到其他Container中(如Window或Applet)
3,Frame:
Frame是Window的子類,由Frame或其子類建立的對象為一個表單
4,舉例:
<span style="font-size:18px;">Frame f = new Frame("測試表單");f.setLayout(new FlowLayout());f.setVisible(true);f.setBounds(600, 200, 500, 400);Button b = new Button("一個按鈕");f.add(b);</span> 三、布局管理器
Java是跨平台啟動並執行,但是不同的平台對於點及座標的定義不完全相同。而且螢幕的解析度解析度不同也會造成位置的變化,為了確保每個組件的相對位置和大小以及外觀,java就設計了布局管理器。
1,布局管理器分類:
FlowLayout:浮動布局管理器
BorderLayout:邊框布局管理器
GridLayout:網格布局管理器
CardLayout:卡片布局管理器
GridBagLayout:網格包布局管理器
如果大家做過web開發的話就會感到java的布局管理有點象網頁的布局,其實網頁也是在不同平台,不同解析度的電腦上運行,從這點來說和java確實挺像的。
2,FlowLayout
是Panel容器的預設管理器,其組件浮動在容器中,它的放置規律是從上到下,從左至右。
<span style="font-size:18px;">public class FrameFlow {public static void main(String[] args) {// 建立一個架構Frame f = new Frame("Test");// 設定表單大小f.setSize(400, 300);// 設定表單顯示位置f.setLocation(100, 100);f.setBackground(Color.orange); // 表單背景色f.setVisible(true); // 表單可見f.setLayout(new FlowLayout());// 設定浮動布局方式for (int i = 0; i < 15; i++) {f.add(new Button("btn" + i));}}}</span>
3,BorderLayout
布置容器的邊框布局,可以對容器組件進行安排,並調整其大小,使其符合五個地區:北、南、東、西、中。每個地區最多隻能包含一個組件,並通過相應的常量進行標識:NORTH、SOUTH、EAST、WEST、CENTER,若只有一個組件,預設位置為Center,是Window、Frame和Dialog的預設布局管理器。
<span style="font-size:18px;">public static void main(String args[]){ Frame f; f=new Frame("Border Layout"); Button bn=new Button("北"); Button bs=new Button("南"); Button bw=new Button("西"); Button be=new Button("東"); Button bc=new Button("中"); f.add(bn,BorderLayout.NORTH); f.add(bs,BorderLayout.SOUTH); f.add(bw,BorderLayout.WEST); f.add(be,BorderLayout.EAST); f.add(bc,BorderLayout.CENTER); f.setSize(200,200); f.setVisible(true); } </span>
其他的幾種布局實現方式也都差不多,我就不一一寫代碼了,大家可以自己去試試。
四、事件監聽機制
事件監聽機制的組成:
事件:使用者在介面上的某一個操作,通常使用各種輸入裝置,如滑鼠、鍵盤等。
事件來源:產生事件的組件,例如在一個按鈕上的單擊就是事件來源
監聽器:包含事件處理器,負責檢查事件是否發生,若發生則啟用事件處理器對其處理
事件處理:引發事件後的處理方式。
舉例:
<span style="font-size:18px;">public static void main(String[] args) {Frame f = new Frame("測試表單");f.setLayout(new FlowLayout());f.setVisible(true);f.setBounds(600, 200, 500, 400);Button b = new Button("一個按鈕");f.add(b);/****************添加事件監聽機制**************///添加關閉按鈕f.addWindowListener(new WindowAdapter() {//若用子類實現WindowListener介面,就需要覆蓋其中的7個方法,可只用到其中的關閉動作,其他動作未用到,但卻必須重寫全部。//因為WindowLister的子類WindowAdapter(適配器)已經實現此介面,並覆蓋了其中所有方法。//那麼只需繼承WindowAdapter,覆蓋需要的方法即可。@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});//添加按鈕點擊事件b.addActionListener(new ActionListener() {//由於ActionListerer介面只實現了一個方法,所以不需要適配器,沒有**Adapter類,//但是若實現方法2個以上則肯定有**Adapterprivate int num = 0;@Overridepublic void actionPerformed(ActionEvent e) {num++;System.out.println("點擊了一次button" + num);}});}</span>
註:這裡事件添加使用的是匿名內部類,如果你對匿名內部類不清楚的話,請看我以前的文章
http://blog.csdn.net/jin870132690/article/details/41597143#t3
五、最後
關於swing的知識我就不介紹了,用swing包中可以實現可視化編程,有過.net開發經驗的人應該瞭解,拖拖拽拽的就把介面弄好了,非常方便,有興趣的可以自己去嘗試一下。
介面是給使用者看的,其實使用者關心的很大一部分還是介面漂不漂亮,要想做一款深受大家好評的軟體,無論如何介面的美化都是必不可少的。
,
java基礎8:GUI