Java华丽转身 —— GUI编程宝典
?GUI,Graphics User Interface,圖形用戶界面。GUI直觀的將計算機(jī)的功能呈現(xiàn)給用戶,圖形界面在視覺上更容易接受、更簡單直觀。
?
???? GUI需要操作系統(tǒng)和硬件的支持。因此,GUI編程往往要處理移植性問題。Java的GUI編程有相對比較好的可移植性。
?
? ? GUI的三要素:組件、容器、事件。
? ? ? ? ? ?組件,繼承了一定的功能模塊,提供了公用接口以便外部調(diào)用,具有良好的可重用性。
????????
? ? ? ? ? ?容器,在有些語言中也稱為窗體,容器也是一種特殊的組件,容器中可以放置其他組件,并且通過布局管理器管理容器中各組件的位置。
???????
? ? ? ? ??事件,每個組件都會觸發(fā)動作事件,java中不同的事件由不同的監(jiān)聽器處理,組件是事件源,而某種監(jiān)聽器主要用來監(jiān)聽來自指定事件源產(chǎn)生的動作事件。
?
一、Swing組件
?
????Java的GUI功能主要集中在awt和swing兩個包中。awt是GUI底層包。swing包是高層的封裝,更容易移植。Swing包中有很多Swing組件。
?
????? Swing組件獨(dú)立于本地窗口系統(tǒng)
????? Swing組件除了AbstractButton類之外都以J開頭
????? Swing組件是基于AWT構(gòu)建的
?????????????包含AWT可視化組件的替代組件,也包含復(fù)雜組件-樹和表,因此,提供了更豐富的組件類型
?
二、容器
?
?????????容器是一種特殊的組件,其它組件可以放置到容器中,并且通過布局管理器進(jìn)行布局控制。
AWT提供的兩個主要的容器類:
? ? ?Window,可以獨(dú)立存在的頂級窗口
? ? ?Panel:可以作為容器容納其它組件,但不能獨(dú)立存在,必須被添加到其他容器中。
? ? ?其中,每一種容器都采用一種默認(rèn)的布局管理方式。
?
布局管理
? ? Java的組件在容器中的具體位置是通過布局管理器LayoutManager實(shí)現(xiàn)的。
? ? 如下圖:
? ? FlowLayout是一種最簡單的布局管理器,主要思想是讓容器內(nèi)的組件按照行優(yōu)先的方式排列,一行排列到邊界后就折回到下一行繼續(xù)排列,以此類推。Panel默認(rèn)使用此布局管理器。
?
??? BorderLayout是Frame的默認(rèn)布局管理器。它把窗體分割成North,South,East,West和Center五個區(qū)域,并且根據(jù)窗體的大小自動調(diào)整組件的大小。默認(rèn)是Center區(qū)。
?
??? GridLayout將空間劃分成規(guī)則的矩形網(wǎng)格,每個單元格區(qū)域大小相等。組件被添加到每個單元格中,先從左到右填滿一行后換行,再從上到下。
?
????????布局管理器負(fù)責(zé)各個組件的大小和位置,用戶無法在這種情況下設(shè)置組件大小和位置屬性,如果用戶要自己設(shè)置則取消該布局管理器的方法為:setLayout(null)
?
?
三、事件
?
????????事件一般分為三種類型:鍵盤事件、鼠標(biāo)事件以及組件的動作事件
????????事件處理過程中涉及到3個對象:事件源,事件和監(jiān)聽器
? ? 事件的處理機(jī)制是一種委派式事件處理方式:普通組件將整個事件處理委托給特定的事件監(jiān)聽器,當(dāng)該事件源發(fā)生指定的事件時,就通知所委托的事件監(jiān)聽器,由事件監(jiān)聽器來處理這個事件。
?
?
???????實(shí)現(xiàn)監(jiān)聽機(jī)制,需要有一下三個必要步驟:
?
?????No.1?In the declaration for the eventhandler class,one line of code specifies that the class either implements alistener interface or extends a class that implements a listener interface.Forexample:
?
[java]?view plaincopyprint?
?
????No.2Another lineof code registers an instance of the event handler class as a listener on oneor more components. For example:
?
[java]?view plaincopyprint?
?????????? No.3?The event handler class has code that implementsthe methods in the listener interface. For example:
?
[java]?view plaincopyprint?
?
? ? 模型如下
? ?
? ? 事件監(jiān)聽有四種實(shí)現(xiàn)方式:自身類作為事件監(jiān)聽器;外部類作為事件監(jiān)聽機(jī)制;匿名內(nèi)部類作為事件監(jiān)聽器;內(nèi)部類作為事件監(jiān)聽器。
代碼:
[java]?view plaincopyprint?
總結(jié)
?
?????????一個軟件是否為優(yōu)秀的軟件,用戶界面的設(shè)計直觀重要。開發(fā)人員在進(jìn)行GUI設(shè)計時,需要與軟件的用戶進(jìn)行充分的溝通,確定用戶的需求和使用習(xí)慣,在實(shí)用性與美觀之間達(dá)到平衡。
總結(jié)
以上是生活随笔為你收集整理的Java华丽转身 —— GUI编程宝典的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据平台不是救世主!做好数字化转型,得
- 下一篇: 10 个利用Eclipse调试Java的