![Java語言程序的設計實用程第十三講圖形用戶界面_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/32c501d0-ff34-4924-ba01-b10aeee30d38/32c501d0-ff34-4924-ba01-b10aeee30d381.gif)
![Java語言程序的設計實用程第十三講圖形用戶界面_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/32c501d0-ff34-4924-ba01-b10aeee30d38/32c501d0-ff34-4924-ba01-b10aeee30d382.gif)
![Java語言程序的設計實用程第十三講圖形用戶界面_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/32c501d0-ff34-4924-ba01-b10aeee30d38/32c501d0-ff34-4924-ba01-b10aeee30d383.gif)
![Java語言程序的設計實用程第十三講圖形用戶界面_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/32c501d0-ff34-4924-ba01-b10aeee30d38/32c501d0-ff34-4924-ba01-b10aeee30d384.gif)
![Java語言程序的設計實用程第十三講圖形用戶界面_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/32c501d0-ff34-4924-ba01-b10aeee30d38/32c501d0-ff34-4924-ba01-b10aeee30d385.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、sisejava語言程序設計實用教程java語言程序設計實用教程sisejava語言程序設計實用教程第13講 圖形用戶界面sisejava語言程序設計實用教程3本章學習要點:l識別用戶界面屏幕的組件以及主要的類l理解布局管理器,在用戶接口上組織組件l理解事件監(jiān)聽器,理解委派事件模型l掌握java圖形用戶界面開發(fā)方法sisejava語言程序設計實用教程13.1 圖形用戶界面組件sisejava語言程序設計實用教程圖形用戶界面gui (見p349圖13-1) l至今為止所編寫的java程序只能從鍵盤輸入,在控制臺屏幕上顯示結果。l圖形用戶界面(gui,graphical user interfac
2、e)是為應用程序提供一個圖形化的界面,程序通過gui與用戶交互,gui能使一個應用程序具有與眾不同的“外觀”與“感覺”,是目前應用程序大多數是采用的方式。 winui:標準的ms windows或x-windows的應用系統(tǒng),應用使用來自操作系統(tǒng)的gui元素和其它加入的元素webui:web應用系統(tǒng),基于瀏覽器操作sisejava語言程序設計實用教程java程序圖形界面的坐標設置程序圖形界面的坐標設置原點(0,0)x軸y軸sisejava語言程序設計實用教程用戶圖形接口awtl awt(abstract window toolkit)是一個獨立平臺的窗口工具組件集,它依賴于對等組件(peer)
3、,而對等組件是一個本地本地gui組件組件,由awt類管理。awt的作用是給用戶提供基本的界面組件,如按鈕、列表框、菜單等。l awt最初只包括與本地對等組件相關聯的組件,稱為稱為重量組件(重量組件(heavyweight component),這些組件在它們自己的本地不透明窗口中繪制,用awt創(chuàng)建的應用外觀在不同的操作系統(tǒng)平臺上是不同外觀在不同的操作系統(tǒng)平臺上是不同。 sisejava語言程序設計實用教程用戶圖形接口swingl java基類(java foundation classes,jfc)是關于gui組件和服務的完整集合,主要由5個api構成:awt、swing、java 2d、dr
4、ag and drop、accessibilityl swing是建立在awt基礎之上的,它利用了awt的底層組件,包括圖形、顏色、字體、工具包和布局管理器等。使用使用awt最好的部分來建立一個新的最好的部分來建立一個新的輕量組件集,而丟棄了輕量組件集,而丟棄了awt中有問題的重量組件中有問題的重量組件部分部分。 l 通過引入新特性和豐富的功能,swing提供了比提供了比awt更全面的組件集合。更全面的組件集合。swing api是圍繞實現awt各個部分的api構建的,這保證了所有早期的awt組件仍然可以使用。sisejava語言程序設計實用教程jfc的兩個特性l javax.swing.pl
5、af:提供一個接口和許多抽象類,swing 用它們來提供自己的可插入外觀功能可插入外觀功能。例如可用提供本地操作系統(tǒng)的外觀,在windows上執(zhí)行應用,看上去像是專為windows環(huán)境定制,其它linux、unix也類似。 l 拖拽與放置拖拽與放置(drag-and-drop):把數據從源 轉變到目標。源和目標可以是兩個不同應用的控件,還可在剪貼板之間來回傳遞數據。java.awt.dnd和java.awt.datatransfer包可用于拖拽與放置操作sisejava語言程序設計實用教程基本概念 l組件組件(component):可視化控件,例如文本框、復選框、列表框、按鈕等稱為組件,是是
6、java的圖形用戶的圖形用戶界面的最基本組成部分界面的最基本組成部分,組件不能獨立地顯示出來,必須將組件放在一定的容器中才可以顯示出來l容器容器(container):容器是一種特殊的組件,一種能夠容納其他組件或容器的組件。每個組件繼承它的父容器的性質,如字體、顏色容器控制存放在其中的組件的位置l布局管理器布局管理器(layout manager):為了使圖形用戶界面具有良好的平臺無關性,提供了專門用來管理組件在容器中的布局的工具。sisejava語言程序設計實用教程java常用控件介紹textbox文本框,接收單行字符串輸入textarea文本區(qū),接收多行字符串的輸入push button按
7、鈕,觸發(fā)一系列動作label標題,在容器上顯示靜態(tài)文本check box復選框,接收yes/no值的數據,可多選radio button單選按鈕,只允許從一組選項中選擇一個combo box下拉列表框,只允許單選,可輸入新值list box列表框,允許多選,不可輸入新值sisejava語言程序設計實用教程swing組件組件基本控制基本控制buttonslistmenuslidertext fieldscombo boxsisejava語言程序設計實用教程swing組件組件信息顯示信息顯示labelprogress bartool tipsisejava語言程序設計實用教程swing組件組件可編
8、輯格式化信息顯示可編輯格式化信息顯示color choosertablefile choosertexttreesisejava語言程序設計實用教程swing程序舉例程序舉例import javax.swing.*; public class helloworldswing public static void main(string args) jframe frame = new jframe(helloworldswing); final jlabel label = new jlabel(hello world); frame.getcontentpane().add(label);
9、frame.addwindowlistener(new windowadapter() public void windowclosing(windowevent e) system.exit(0); ); frame.pack(); frame.setvisible(true); sisejava語言程序設計實用教程swing應用程序基本結構應用程序基本結構l引入引入swing 包包:import javax.swing.import javax.swing.* *; ; import java.awt.import java.awt.* *; ; import java.awt.event
10、. import java.awt.event.* *; ; l選擇選擇look&feell設置窗口布局設置窗口布局l設置窗口容器設置窗口容器jframe、jpanell設置設置swing組件,將其加入組件,將其加入jpanell注意:注意:jframe的默認大小為的默認大小為00并且是不可見的,用并且是不可見的,用setbounds方法設置框架的大小,方法設置框架的大小,setvisible(true)顯示窗口顯示窗口sisejava語言程序設計實用教程swing中的中的look&feelcde/motif look and feelwindows look and feel
11、java look and feel sisejava語言程序設計實用教程swing中的中的look&feell使用使用uimanager.setlookandfeel( )uimanager.setlookandfeel( ) 方法進行設置。方法進行設置。在該方法中可以使用的參數:在該方法中可以使用的參數:uimanager.getcrossplatformlookandfeelclassname()uimanager.getcrossplatformlookandfeelclassname() - java look & feel. uimanager.getsysteml
12、ookandfeelclassname()uimanager.getsystemlookandfeelclassname() 當前平臺的當前平臺的look&feeljavax.swing.plaf.metal.metallookandfeeljavax.swing.plaf.metal.metallookandfeel -java look & feel. com.sun.java.swing.plaf.windows.windowslookandfeelcom.sun.java.swing.plaf.windows.windowslookandfeel - windows l
13、ook & feel. com.sun.java.swing.plaf.motif.motiflookandfeelcom.sun.java.swing.plaf.motif.motiflookandfeel - cde/motif look & feel. javax.swing.plaf.mac.maclookandfeeljavax.swing.plaf.mac.maclookandfeel - mac os look & feelsisejava語言程序設計實用教程swing組件層次結構(組件層次結構(p351)java.awt.containerjavax.s
14、wing.jcomponentjtextcomponentabstractbuttonjpaneljcomboboxjlabeljtreejtextareajtextfieldjpasswordfieldjtogglebuttonjbuttonjmenuitemjcheckboxjradiobuttonsisejava語言程序設計實用教程jcomponentl 組件類的層次結構組件類的層次結構java.lang.object | +-java.awt.component | +-java.awt.container | +-javax.swing.jcomponentl jcomponent大
15、多數大多數swing組件類父類組件類父類sisejava語言程序設計實用教程一些gui組件l 標簽標簽(jlabel)l 文本框文本框(jtextfield)l 按鈕按鈕(jbutton)l 復選框復選框(jcheckbox)l 組合框組合框(jcombobox)l 文本文本(jtextarea)l 框架框架(jframe)l 面板面板(jpanel)sisejava語言程序設計實用教程標簽(jlabel)l 標簽標簽q為為gui提供文本提供文本(主要主要)或圖像或圖像(也可以也可以)信息信息q對應類對應類(jlabel) (jcomponent的子類的子類)q可以顯示可以顯示:q單行的只讀的
16、文本信息單行的只讀的文本信息q圖像圖像q同時顯示文本與圖像信息同時顯示文本與圖像信息q程序一般不修改標簽的內容程序一般不修改標簽的內容用法:用法:jlabel label=new jlabel(“標簽名標簽名”); panel.add(label) ;/將標簽加入容器將標簽加入容器sisejava語言程序設計實用教程文本框(jtextfield)l 文本框文本框(jtextfield)q顯示單行的文本信息顯示單行的文本信息qjtextfield extends jtextcomponentl 密碼框密碼框(jpasswordfield)q輸入的字符顯示為輸入的字符顯示為“*”l 用法舉例:用法
17、舉例:jtextfield textobj=new jtextfield(10);10指定文本域的長度指定文本域的長度 panel.add(textobj);textobj.settext(“yyyy-mm-dd”);string date=textobj.gettext();sisejava語言程序設計實用教程按鈕(jbutton)l 當鼠標左鍵單擊按鈕組件時,能觸發(fā)特定的事當鼠標左鍵單擊按鈕組件時,能觸發(fā)特定的事件件l 在在java中中, 廣義的按鈕包括廣義的按鈕包括:q命令式按鈕命令式按鈕(jbutton)q復選框復選框(jcheckbox)q單選按鈕單選按鈕(jradiobutton)
18、用法舉例:用法舉例:checkboxgroup cbg=new checkboxgroup();checkbox check1=new checkbox(“check1,cbg,true); checkbox check2= new checkbox(“check2,cbg,false); panel.add(check1);panel.add(check2);sisejava語言程序設計實用教程組合框(jcombobox)l 組合框組合框(jcombobox)q可以從下拉式的列表框中選取其中的列表項可以從下拉式的列表框中選取其中的列表項q有時也稱為下拉框有時也稱為下拉框(drop-down
19、list)l 類類jcombobox中的方法中的方法qgetselectedindex( )q返回當前被選中的項返回當前被選中的項qsetmaximumrowcount(n)q設置最多顯示列表項的項數設置最多顯示列表項的項數q滾動條滾動條(scrollbar)會自動加上會自動加上sisejava語言程序設計實用教程滑動條(jslider)l 滑動條滑動條(jslider)提供了以圖形方式進行數值選取提供了以圖形方式進行數值選取的功能。的功能。l 可以用來表示程序執(zhí)行的進度情況。可以用來表示程序執(zhí)行的進度情況。sisejava語言程序設計實用教程ljava.awt.container是compo
20、nent的子類,一個容器可以容納多個組件,并使它們成為一個整體。容器可以簡化圖形化界面的設計,以整體結構來布置界面。所有的容器都可以通過add()方法向容器中添加組件。lswing的容器分頂層容器和其它容器,一下為三個頂層組件:容器(container)技術介紹appletdialogframesisejava語言程序設計實用教程swing組件組件通用容器通用容器panel scroll panesplit panetool bartabbed panesisejava語言程序設計實用教程框架(jframe)l 類類 jframe 是是java.awt.frame的子類的子類l 在在swing
21、的組件中的組件中, jframe 并不全是由并不全是由java編寫的編寫的q是一種與平臺關系比較密切的組件是一種與平臺關系比較密切的組件(heavyweight component)java.lang.object | +-java.awt.component | +-java.awt.container | +-java.awt.window | +-java.awt.frame | +-javax.swing.jframesisejava語言程序設計實用教程設置窗口容器設置窗口容器ljframe類似于類似于frame ,jframe是是awt中中frame的子類。的子類。l不能直接向不能直
22、接向jframe中加入組件,中加入組件,而要向而要向jframe的的content pane或向另外提供的新的或向另外提供的新的content pane中增加組件。中增加組件。=content pane中包含除了中包含除了menu bar之外的所有組件。之外的所有組件。getcontentpane() 獲取獲取jframe的的content pane;setcontentpane() 設置設置content panesisejava語言程序設計實用教程面板(jpanel)q一種中間容器,用來組成其它組件一種中間容器,用來組成其它組件q可以添加各種組件可以添加各種組件(包括面板組件包括面板組件)
23、q面板面板(jpanel)的大小由它所包含的組件決定的大小由它所包含的組件決定q當組件個數增加,面板當組件個數增加,面板(jpanel)也會隨之而增大也會隨之而增大sisejava語言程序設計實用教程設置設置swing組件組件frame = new jframe(.); button = new jbutton(.);label = new jlabel(.); pane = new jpanel(); pane.add(button); pane.add(label); frame.getcontentpane().add(pane,borderlayout.center); sisejav
24、a語言程序設計實用教程建立建立swing guil swing包中定義了兩類組件:包中定義了兩類組件: 頂層容器(頂層容器(jframe,japplet,jwindow,jdialog) 輕型組件(輕型組件(j開頭的所有組件,如開頭的所有組件,如jbutton,jpanel,jmenu等)等)l一般如果使用一般如果使用swing組件,則程序中只使用組件,則程序中只使用swing組件組件 和和swing容器。容器。l swing組件可以加入到一個與頂層容器相關的組件可以加入到一個與頂層容器相關的content pane中,而不能直接加入到頂層容器中。中,而不能直接加入到頂層容器中。sisejav
25、a語言程序設計實用教程13.2 布局管理器sisejava語言程序設計實用教程布局管理器布局管理器-layoutmanagerljava為了實現跨平臺的特性并且獲得動態(tài)的布局效果,為了實現跨平臺的特性并且獲得動態(tài)的布局效果,java將容器內的所有組件安排給一個將容器內的所有組件安排給一個“布局管理器布局管理器”負負責管理,如:責管理,如:排列順序,組件的大小、位置排列順序,組件的大小、位置,當窗口移,當窗口移動或調整大小后組件如何變化等功能授權給對應的容器動或調整大小后組件如何變化等功能授權給對應的容器布局管理器來管理。布局管理器來管理。l不同的布局管理器使用不同算法和策略,容器可以通過不同的
26、布局管理器使用不同算法和策略,容器可以通過選擇不同的布局管理器來決定布局。選擇不同的布局管理器來決定布局。sisejava語言程序設計實用教程布局管理器的類型 java中的布局類型包括以下幾種:- flowlayout(流式布局)(流式布局)- borderlayout (邊界布局)(邊界布局) - gridlayout(網格布局)(網格布局)- cardlayout (卡片布局)(卡片布局)- gridbaglayout(高級方格式界面設計)(高級方格式界面設計)- boxlayout(盒式界面設計):由(盒式界面設計):由swing包提供包提供 - - null(空布局)(空布局)sise
27、java語言程序設計實用教程flowlayout布局管理器l flowlayout 是panel、jpanel、applet的缺省布局管理器。其組件的放置規(guī)律是從上到下、從左到右進行放置其組件的放置規(guī)律是從上到下、從左到右進行放置。如如果容器足夠寬,第一個組件先添加到容器中第一行的最果容器足夠寬,第一個組件先添加到容器中第一行的最左邊,后續(xù)的組件依次添加到上一個組件的右邊,如果左邊,后續(xù)的組件依次添加到上一個組件的右邊,如果當前行已放置不下該組件,則放置到下一行的最左邊當前行已放置不下該組件,則放置到下一行的最左邊。 l 當容器的大小發(fā)生變化時,用flowlayout管理的組件會發(fā)生變化,其變
28、化規(guī)律是:組件的大小不變,但是相對位置會發(fā)生變化。例如有三個按鈕都處于同一行,但是如果把該窗口變窄,窄到剛好能夠放下一個按鈕,則第二個按鈕將折到第二行,第三個按鈕將折到第三行。sisejava語言程序設計實用教程flowlayout布局管理器l flowlayout的構造函數有:- flowlayout( ):生成一個默認的流式布局生成一個默認的流式布局- flowlayout(int alignment):可以設定每一行組可以設定每一行組件的對齊方式件的對齊方式 - flowlayout(int alignment,int horz,int vert):可可以指定對齊方式,設定組件間的水平和
29、垂直距離以指定對齊方式,設定組件間的水平和垂直距離l 對齊方式參數的含義:sisejava語言程序設計實用教程l flowlayout(flowlayout.right,20,40);/*第一個參數表示組件的對齊方式,指組件在這一行中的位置是第一個參數表示組件的對齊方式,指組件在這一行中的位置是居中對齊、居右對齊還是居左對齊居中對齊、居右對齊還是居左對齊,第二個參數是組件之間的,第二個參數是組件之間的橫向間隔,第三個參數是組件之間的縱向間隔,單位是象素。橫向間隔,第三個參數是組件之間的縱向間隔,單位是象素。*/l flowlayout(flowlayout.left); /居左對齊,橫向間隔和
30、縱向間隔都是缺省值居左對齊,橫向間隔和縱向間隔都是缺省值5個象素個象素l flowlayout(); /缺省的對齊方式居中對齊,橫向間隔和縱向間缺省的對齊方式居中對齊,橫向間隔和縱向間隔都是缺省值隔都是缺省值5個象素個象素 flowlayout mylayout = new flowlayout();flowlayout exlayout = new flowlayout(flowlayout.right);setlayout(exlayout); / 為容器為容器設置新布局設置新布局 構造方法說明構造方法說明sisejava語言程序設計實用教程(p355,演示),演示)sisejava語言程
31、序設計實用教程l 網格布局管理器以矩形網管形式對容器的組件進行布置。l 容器被分成大小相等的矩形格子,一個矩形格子中放置一個組件,從左到右,自頂向下地放置。l gridlayout的構造函數如下所示:q gridlayout():生成一個單列的網格布局q gridlayout(int row,int col):生成一個設定行數和列數的網格布局q gridlayout(int row,int col,int horz,int vert):可以設置組件之間的水平和垂直間隔gridlayout布局管理器sisejava語言程序設計實用教程示例(演示). . . button btn; / 聲明按鈕數
32、組聲明按鈕數組 string str=1,2,3,4,5,6,7,8,9; setlayout(new gridlayout(3,3); btn=new buttonstr.length; / 創(chuàng)建按鈕數組創(chuàng)建按鈕數組 for(int i=0;istr.length;i+) btni=new button(stri); add(btni); sisejava語言程序設計實用教程l borderlayout 是frame、jframe、dialog和japplet的缺省布局管理器。borderlayout布局管理器把容器分成5個區(qū)域:north,south,east,west和center,每個
33、區(qū)域只能放置一個組件。borderlayout布局管理器centernorthsouthwesteastsisejava語言程序設計實用教程lborderlayout() :構造一個組件之間沒有間距的新邊界布局。 lborderlayout(int hgap, int vgap) :指定組件之間的水平、垂直間距來構造一個邊界布局。 例如:f.setlayout(new borderlayout();f.add(north, new button(north);/第一個參數表示把按鈕添加到容器的north區(qū)域 構造方法構造方法sisejava語言程序設計實用教程例子(演示). . . . . .
34、 setlayout(new borderlayout(); setlayout(new borderlayout(); button btneast=new button(button btneast=new button(東東);); button btnwest=new button(button btnwest=new button(西西);); button btnnorth=new button(button btnnorth=new button(北北);); button btnsouth=new button(button btnsouth=new button(南南););
35、 button btncenter=new button(button btncenter=new button(中中);); add(btneast,borderlayout.east);add(btneast,borderlayout.east); add(btnwest,borderlayout.west); add(btnwest,borderlayout.west); add(btnnorth,borderlayout.north); add(btnnorth,borderlayout.north); add(btnsouth,borderlayout.south); add(btn
36、south,borderlayout.south); add(btncenter,borderlayout.center); add(btncenter,borderlayout.center);sisejava語言程序設計實用教程l在使用borderlayout的時候,如果容器的大小發(fā)生變化,其變化規(guī)律為:組件的相對位置不變,大小發(fā)生變化。例如:l容器變高了,則north、south區(qū)域不變,west、center、east區(qū)域變高;l如果容器變寬了,west、east區(qū)域不變,north、center、south區(qū)域變寬。l不一定所有的區(qū)域都有組件,如果四周的區(qū)域(west、east、no
37、rth、south區(qū)域)沒有組件,則由center區(qū)域去補充,但是如果center區(qū)域沒有組件,則保持空白borderlayout內的組件變化特性內的組件變化特性sisejava語言程序設計實用教程cardlayout布局管理器(p358,演示)l 卡片布局是把組件安排到不同的卡片容器中,這個卡片容這個卡片容器相互重疊,但一次只能顯示一個組件器相互重疊,但一次只能顯示一個組件,因此也稱之為“聯合布局(combining layouts)”,該布局管理器會自動改變原有尺寸,充滿整個空間,在添加組件時需要給組件起個在添加組件時需要給組件起個名稱,以便與以后直接通過名稱調用組件。名稱,以便與以后直接
38、通過名稱調用組件。l 每當需要許多面板切換,而每個面板需要顯示為不同布局時,可以使用卡片布局。l 卡片布局提供了兩種方式顯示組件一種是通過public void show(container parent,string name);另一種是根據組件添加的順序直接調用first(container parent),next(container parent),previous(container parent),last(container parent)4個方法來顯示組件 sisejava語言程序設計實用教程l boxlayout是swing提供的布局管理器,它有兩種排列方式,一種是水平的,另
39、一種是垂直的。我們可以使用boxlayout提供的兩個常量x_axis、y_axis來指明組件在容器中是水平還是垂直排列的。l 構造方法:構造方法: boxlayout(container con, int axis) q boxlayout.x_axis或或boxlayout.y_axisboxlayout布局管理器sisejava語言程序設計實用教程gridbaglayout類與gridbagconstraints類lgridbaglayout 是一個靈活的布局管理器,借助于gridbagconstraints類,實現更靈活的外觀管理,提供具有不同大小的行和列來放置組件,每個單提供具有不同
40、大小的行和列來放置組件,每個單元大小可不同。元大小可不同。 l方法:使用gridbagconstraints對象來確定組件的大小和位置約束,然后將其加入gridbaglayout 對象中button1 button2 button3button8button5button6button7button4button9sisejava語言程序設計實用教程1. gridbaglayout gbl=new gridbaglayout(); /只有一種無參構造方法2. panel.setlayout(gbl); 3. gridbagconstraints q=new gridbagconstraints
41、();4. /配置約束對象5. q.*=*;6. 7. gbl.setconstraints(component, q); /將組件component按照約束q設置8. panel.add(component);具體的使用方式(具體的使用方式(p359)sisejava語言程序設計實用教程常用的約束條件一常用的約束條件一lfill屬性:當組件的顯示區(qū)域大于組件大小時的顯示方式。該屬性必須與weighttx和weighty屬性一起使用q默認值為gridbagconstraints.none,表示組件大小不變 ;qgridbagconstraints.horizontal表示將組件拉寬到與單元格寬
42、度相同;qgridbagconstraints.vertical表示將組件的高度提升到與單元格高度一致;qgridbagconstraints.both表示將組件的高度和寬度都拉伸到與單元格一致.lboxlayout屬性允許縱向或橫向布置多個組件的布局管理器sisejava語言程序設計實用教程常用的約束條件二常用的約束條件二lgridwidth,gridheight屬性:指定組件所占的單元格的數量,默認值皆為1. gridwidth表示橫向單元格數量;gridheight表示縱向單元格數量.lgridx,gridy屬性:指定組件所在單元格的位置. gridx表示列數; gridy表示行數.lw
43、eightx,weighty屬性:指定當圖形窗口擴大時,各單元格如何分配被擴大的空間.weightx表示橫向擴大權重,weighty表示縱向擴大權重.lipadx,ipady屬性:指定組件內部的填充寬度和高度.linsets屬性:指定組件和單元格之間的空隙.lanchor屬性:指定當組件小于單元格時的放置方式.sisejava語言程序設計實用教程null布局管理器l 當用戶不想使用布局管理器,需要自己設置組件的位置和大小時,可以把容器的布局設置為可以把容器的布局設置為null布局布局。l 向空布局的容器添加組建時需要下列兩個步驟:l 使用add(c)方法向容器中添加組件c;l 組件調用setb
44、ounds(int x,int y,int width,int height)方法設置該組件在容器中的位置。l 需要注意的是,這種方法會導致程序與系統(tǒng)相關,如不同的分辨率會產生不同的效果。sisejava語言程序設計實用教程小結:布局管理(一)l flowlayout: 組件在一行中從左至右水平排列,排滿后折行,缺省的panel布局管器l borderlayout:北、南、東、西、中,缺省的窗口容器的管理器l cardlayout:每一個組件作為一個卡片,容器僅顯示多個卡片中的某一個l gridlayout:以行和列的網格形式安排組件l gridbaglayout:使用復雜、功能靈活sisej
45、ava語言程序設計實用教程小結:布局管理(二)l frame是一個頂級窗口。是一個頂級窗口。frame的缺省布局管理器為的缺省布局管理器為borderlayout。l panel 無法單獨顯示,必須添加到某個容器中。無法單獨顯示,必須添加到某個容器中。 panel 的的缺省布局管理器為缺省布局管理器為flowlayout。l 當把當把panel 作為一個組件添加到某個容器中后,該作為一個組件添加到某個容器中后,該panel 仍然可以有自己的布局管理器。因此,可以利用仍然可以有自己的布局管理器。因此,可以利用panel 使使得得borderlayout 中某個區(qū)域顯示多個組件,達到設計復中某個區(qū)
46、域顯示多個組件,達到設計復雜用戶界面的目的雜用戶界面的目的 。l 如果采用無布局管理器如果采用無布局管理器 setlayout(null),則必須使用,則必須使用setlocation(),setsize(),setbounds()等方法手工設置組等方法手工設置組件的大小和位置,此方法會導致平臺相關,不鼓勵使用。件的大小和位置,此方法會導致平臺相關,不鼓勵使用。 sisejava語言程序設計實用教程13.3 處理事件sisejava語言程序設計實用教程幾個有用的概念l 事件 描述用戶所執(zhí)行的操作,描述用戶所執(zhí)行的操作,在java.awt.event包中定義了若干類型的事件若干類型的事件(例如點
47、擊鼠標、按下鍵盤、關閉窗口)(例如點擊鼠標、按下鍵盤、關閉窗口)l 監(jiān)聽者接口 特定類型的listener接口,用于監(jiān)聽特定類型的事件l 監(jiān)聽者類 是實現了某種監(jiān)聽者接口的類,由編程者定義l 事件監(jiān)聽者 是某個監(jiān)聽者類的對象,由編程者使用new創(chuàng)建sisejava語言程序設計實用教程awt事件處理的基本概念和流程l 事件源用戶在各種場合進行的各項操作,如敲擊鍵盤或用鼠標點擊某個組件等。事件源指的是產生事件的對象事件源指的是產生事件的對象。l 事件對象對于不同的事件源,java虛擬機會產生相應類型的事件對象。java自動識別各種不同的事件對象的類型并進行分類處理。l 事件處理(監(jiān)聽)器接口各種類
48、型的事件均有對應的事件處理器接口事件處理器接口。該接口封裝了與其對應類該接口封裝了與其對應類型事件的各種處理方法,型事件的各種處理方法,并建立了事件到相應處理并建立了事件到相應處理方法的自動映射。方法的自動映射。sisejava語言程序設計實用教程事件處理模型l基于授權事件模型:q 事件來源對象事件來源對象s因用戶進行操作(鼠標或鍵盤)q 系統(tǒng)會自動觸發(fā)此事件類對象事件類對象e,并通知所授權的事件監(jiān)聽者l(需事先調用來源對象的addxxxlistener方法向l注冊),q 事件監(jiān)聽者事件監(jiān)聽者l中有處理各種事件的方法(事件處理者1n)便會處理此事件e的各種狀況 。sisejava語言程序設計實
49、用教程編程的基本方法(重點)1. 對java.awt中組件實現事件處理必須使用java.awt.event包,所以在程序開始應加入import java.awt.event.*語句。2. 定義事件監(jiān)聽者類,有兩種方法(): 2.1.實現事件所對應的接口接口xxlistener,并重寫接口中的全部方法全部方法(即使不需要的方法也必須定義,可定義為空方法)。 2.2. 繼承事件對應的抽象適配器抽象適配器(adapter)類類,重寫該類中所需的方法所需的方法3. 創(chuàng)建事件監(jiān)聽者對象4. 為將會觸發(fā)事件的組件c注冊相應的事件監(jiān)聽者對象: 事件源.addxxlistener(xxlistener代表某種事件監(jiān)聽者)。實際上addxxlistener中的參數是一個事件監(jiān)聽器對象事件監(jiān)聽器對象。5. 要刪除事件監(jiān)聽者可以使用語句:事件源.removexxlistener;sisejava語言程序設計實用教程public class buttonact extends frame .
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 淄博市巡游出租汽車駕駛員區(qū)域科目考試題庫及答案(供參考)
- 2025年河北女子職業(yè)技術學院高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- 普通合伙合同協議書
- 隔音降噪合同范本
- 幼兒園中班建康活動策劃方案五篇
- 信號工勞務合同
- 標準鋼材購銷合同樣本
- 智能設備研發(fā)與生產合作合同
- 代理的合同范本
- 2024年數字化教育平臺推廣合同
- 測井監(jiān)督管理手冊
- 冷庫庫房招商方案
- 芯片可靠性分析
- 2023年貴州省畢節(jié)市中考物理試題(原卷+解析版)真題含答案
- 口腔種植技術臨床應用能力評估報告范本
- 從中國制造到中國創(chuàng)造(優(yōu)秀課件)
- 新華字典第12版電子版
- 【考試版】蘇教版2022-2023學年四年級數學下冊開學摸底考試卷(五)含答案與解析
- 血液透析個案護理兩篇
- 第八章 客戶關系管理
- 新版人教版高中英語選修一、選修二詞匯表
評論
0/150
提交評論