圖形用戶界面(GUI--Graphical User Interface)
抽象窗口工具集(AWT--Abstract Window Tookit)
相關軟件包:
java.awt包:提供基本GUI組件、視覺控制和繪圖工具API
java.awt.event包:提供Java GUI事件處理API。
·組件(Component)是圖形用戶界面的基本組成元素,如菜單、按鈕、標籤、文本等。
·組件不能獨立地顯示,必須將組件放在一定的容器中纔可以顯示出來。
·抽象類java.awt.Component是除了菜單相關組件之外素有Java AWT組件類的根父類,該類規定了GUI組件的基本特性。
·容器(Container)實際上市Component的子類,因此容器類對象本身也是一個組件,具有組件的所有性質,另外還具有容納其他組件和容器的功能。
·容器類對象可使用方法add()添加組件。
兩種主要的容器類型:
java.awt.Window:可自由停泊的頂級窗口
java.awt.Panel:可作爲容器容納其他組件,但不能獨立存在,必須被添加到其他容器(如Frame)中
Frame對象顯示的效果是一個可自由停泊的頂級“窗口”,帶有標題和尺寸重置角標。
·Frame默認初始化爲不可見的,可以調用Frame對象的setVisible(true)方法使它變爲可見。
·它也可以使用add()方法包含其他組件。
組件定位:
·Java組件在容器中的定位由佈局管理器決定。
·人工控制組件在容器中的定位,可取消佈局管理器,然後使用Component類的以下方法:
setLocation()
setSize()
setBounds() //設定組件的位置和大小
佈局管理器:
·容器對其中所包含組件的排列方式,包括組件的位置的大小設定,被稱爲容器的佈局(Layout)。
·每個容器都有一個佈局管理器,當容器需要對某個組件進行定位或判斷其大小尺寸時,就會調用對應的佈局管理器。
·FlowLayout佈局是Panel容器的默認佈局管理器類型。
效果:
組件在容器中按照加入次序逐行進行定位,行內從左到右,一行排滿後換行。
不改變組件原始尺寸。
組件間的對齊方式默認爲居中對齊,也可在構造方法中設置不同的組件間距、行距及對齊方式。
·構造方法:public FlowLayout()
public FlowLayout(int align)
public FlowLayout(int align,int hgap,int vgap)
·BorderLayout佈局是Frame容器的默認佈局管理器。
效果:
將整個容器的佈局劃分爲東西南北中五個區域,組件只能被添加到指定的區域。
如不指定組件的加入部位,則默認加入到Center區域。
每個區域只能加入一個組件,如加入多個組件的話,則先前加入的組件會被遺棄。
組件尺寸被強行控制,即與其所在區域的尺寸相同。
·構造方法:public BorderLayout()
public BorderLayout(int hgap,int vgap)
·北、南兩個區域只能在水平方向收縮(寬度可調)
·東、西兩個區域只能在垂直方向收縮(高度可調)
·中部區域可以兩個方向可調
·GridLayout佈局:網格佈局
·將容器區域劃分爲規則的矩形網格,每個單元格區域大小相等,組件被添加到每個單元格中,按組件加入順序先從左到右填滿一行後換行,行間從上到下。
·GridLayout型佈局的組件大小也被佈局管理器強行控制,與單元格同等大小,當容器尺寸發生改變時,組件的相對位置保持不變,但大小自動調整。
·構造方法:public GridLayout(int rows,int cols)
public GridLayout(int rows,int cols,int hgap,int vgap)
·CardLayout佈局:
將多個組件在同一容器區域內交替顯示,相當於多張卡片摞在一起,只有最上面的卡片是可見的。
CardLayout可以按名稱顯示某一張卡片,或按先後順序依次顯示,也可以直接定位到第一張或最後一張卡片。
主要方法:public void first(Container p)
public void last(Container p)
public void previous(Container p)
public void next(Container p)
public void show(Container p,String name)
·GridBagLayout佈局:是建立在GridLayout基礎之上的一種極爲複雜而靈活的佈局方式。
維持動態佈局網格。
···容器的嵌套使用很重要,實現了很多功能。
·GUI事件處理:鼠標單擊Button時,產生一個ActionEvent對象。
基本概念:
·事件(Event):一個事件類型的對象,用於描述了發生什麼事情,當用戶在組件上進行操作時會觸發相應的事件。
·事件源(Event Source):能產生事件的GUI組件對象,如按鈕,文本框等。
·事件處理方法(Event Handler):能夠接收、解析和處理事件類對象,實現與用戶交互功能的方法。
·事件監聽器(Event Listener):調用事件處理方法的對象。
Java GUI設計中,通過註冊監聽器的方式對所關注的事件源進行監控。
actionCommand屬性:用於記錄按鈕、菜單類組件所激發的ActionEvent事件相關指令信息
·多重監聽器:
一般情況下,事件源可以產生多種不同類型的事件,因而可以註冊多種不同類型監聽器。
一個事件源組件上可以註冊多個監聽器,針對同一個事件源的同一種事件也可以註冊多個監聽器,一個監聽器可以被註冊到多個不同的事件源上。
·事件適配器類(Adapter):針對大多數事件監聽器接口定義的響應的實現類,適配器類實現了相應監聽器接口中所有的方法,但不做任何事情。