Java圖形用戶界面設計(GUI)

圖形用戶界面(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):針對大多數事件監聽器接口定義的響應的實現類,適配器類實現了相應監聽器接口中所有的方法,但不做任何事情。

 

發佈了78 篇原創文章 · 獲贊 5 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章