第8章 高級(jí)GUI設(shè)計(jì)_第1頁(yè)
第8章 高級(jí)GUI設(shè)計(jì)_第2頁(yè)
第8章 高級(jí)GUI設(shè)計(jì)_第3頁(yè)
第8章 高級(jí)GUI設(shè)計(jì)_第4頁(yè)
第8章 高級(jí)GUI設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第8章高級(jí)GUI設(shè)計(jì)布局設(shè)計(jì)2基本事件4菜單條、菜單、菜單項(xiàng)31對(duì)話框33本章內(nèi)容提要菜單條javax.swing包中的JMenubar類(lèi)是負(fù)責(zé)創(chuàng)建菜單條的,即JMenubar的一個(gè)實(shí)例就是一個(gè)菜單條。JFrame類(lèi)提供一個(gè)將菜單條放置到窗口中的方法:setMenuBar(JMenuBarbar);

只能向窗口添加一個(gè)菜單條。

8.1菜單條、菜單、菜單項(xiàng)菜單JMenu類(lèi)的主要方法:JMenu()JMenu(Strings)publicvoidadd(JMenuItemitem)

publicMenuItem

getItem(intn)

publicvoidinsert(MenuItemitem,intn)publicvoidremove(intn)

8.1菜單條、菜單、菜單項(xiàng)菜單項(xiàng)

JMenuItem類(lèi)的主要方法:JMenuItem()

JMenuItem(Strings)publicStringgetText()publicvoidaddActionListener(ActionListener)8.1菜單條、菜單、菜單項(xiàng)8.1菜單條、菜單、菜單項(xiàng)[例8-1]菜單的應(yīng)用

8.1菜單條、菜單、菜單項(xiàng)有關(guān)菜單的幾個(gè)技巧

(1)增加菜單分割線使用JMenu類(lèi)中的addSeparator()方法。如:jMenu1是JMenu的一個(gè)實(shí)例jMenu1.add("打開(kāi)");jMenu1.addSeparator();//分隔線jMenu1.add("保存");jMenu1.add("退出");

8.1菜單條、菜單、菜單項(xiàng)(2)復(fù)選框菜單項(xiàng)JCheckBoxMenuItem類(lèi)創(chuàng)建這個(gè)菜單項(xiàng)。如:

JMenuItemjMenuItem3=newJCheckBoxMenuItem();(3)嵌入子菜單

JMenu是JMenuItem的子類(lèi),因此菜單項(xiàng)本身還可以是一個(gè)菜單,稱這樣的菜單項(xiàng)為子菜單。

當(dāng)把組件添加到容器中時(shí),希望控制組件在容器中的位置,這就需要學(xué)習(xí)布局設(shè)計(jì)的知識(shí)。以下將分別介紹java.awt包中的FlowLayout、BorderLayout、CardLayout、GridLayout布局類(lèi)java.swing.border包中的BoxLayout布局類(lèi)8.2布局設(shè)計(jì)FlowLayout布局

遵循這種布局的容器將其中的組件按照加入的先后順序從左向右排列,一行排滿之后就轉(zhuǎn)到下一行繼續(xù)從左至右排列,每一行中的組件都按著布局指定的對(duì)齊方式和垂直間隙排列;當(dāng)形成多行組件時(shí),行與行之間的間隙是就是布局的水平間隙。8.2布局設(shè)計(jì)

這種布局當(dāng)容器內(nèi)的組件數(shù)增加時(shí),就顯得高低參差不齊。有時(shí)會(huì)采用容器嵌套的方法,使整個(gè)容器的布局達(dá)到應(yīng)用的需求。

FlowLayout類(lèi)的常用方法如下:FlowLayout()

FlowLayout(int

aligin,int

hgap,int

vgap)publicvoidsetAlignment(intalign)

publicvoidsetHgap(int

hgap)

publicvoidsetVgap(int

vgap)

8.2布局設(shè)計(jì)[例8-2]FlowLayout布局的應(yīng)用8.2布局設(shè)計(jì)BorderLayout布局使用這種布局,容器空間簡(jiǎn)單地劃分為東、西、南、北、中五個(gè)區(qū)域,中間的區(qū)域最大。每加入一個(gè)組件都應(yīng)該指明把這個(gè)組件加在哪個(gè)區(qū)域中,區(qū)域由BorderLayout中的靜態(tài)常量CENTER、NORTH、SOUTH、WEST、EAST表示。例如:con.add(a,BorderLayout.CENTER);或con.add(BorderLayour.CENTER,a);8.2布局設(shè)計(jì)添加到某個(gè)區(qū)域的組件將占據(jù)整個(gè)這個(gè)區(qū)域。每個(gè)區(qū)域只能放置一個(gè)組件。使用BorderLayout布局的容器最多能添加5個(gè)組件。8.2布局設(shè)計(jì)[例8-3]BorderLayout布局的應(yīng)用

8.2布局設(shè)計(jì)CardLayout布局使用CardLayout布局的容器可以容納多個(gè)組件,但是實(shí)際上同一時(shí)刻容器只能從這些組件中選出一個(gè)來(lái)顯示,就像一疊“撲克牌”每次只能顯示最上面一張一樣,這個(gè)被顯示的組件將占據(jù)所有的容器空間,依次排序。

8.2布局設(shè)計(jì)CardLayout布局假設(shè)有一個(gè)容器con,那么,使用CardLayout的一般步驟如下:1.創(chuàng)建CardLayout對(duì)象作為布局。2.使用容器的setLayout()方法為容器設(shè)置布局。3.調(diào)用容器的方法add(Strings,Componnemtb)。8.2布局設(shè)計(jì)4.創(chuàng)建的布局card用CardLayout類(lèi)提供的show()方法,根據(jù)容器名字con和其中的組件的代號(hào)s顯示這一組件,也可以按組件加入容器的順序顯示組件,如:card.first(con)card.last(con)card.next(con)card.previous(con)8.2布局設(shè)計(jì)[例8-4]CardLayout布局的應(yīng)用8.2布局設(shè)計(jì)GridLayout布局

把容器劃分成若干行乘若干列的網(wǎng)格區(qū)域,組件就位于這些劃分出來(lái)的小格中。使用GridLayout布局編輯器的一般步驟如下:(1)使用GridLayout的構(gòu)造方法GridLayout(intm,intn)創(chuàng)建布局對(duì)象。(2)使用GridLayout布局的容器調(diào)用方法add將組件加入容器。

8.2布局設(shè)計(jì)[例8-5]GridLayout布局的應(yīng)用8.2布局設(shè)計(jì)BoxLayout布局

BoxLayout在java.swing.border包中。javaswing包提供了Box類(lèi),該類(lèi)創(chuàng)建的容器稱作一個(gè)盒式容器,盒式容器的的默認(rèn)布局就是盒式布局,而且不允許更改盒式容器的布局。因此,在策劃程序的布局時(shí),可以利用容器的嵌套,將某個(gè)容器嵌入幾個(gè)盒式容器,達(dá)到布局目的。8.2布局設(shè)計(jì)[例8-6]BoxLayout布局的應(yīng)用8.2布局設(shè)計(jì)控制盒式布局容器中組件之間的距離,就需要使用水平支撐組件或垂直支撐組件。1.支撐Box類(lèi)調(diào)用靜態(tài)方法createHorizontalStrut(intwidth)可以得到一個(gè)不可見(jiàn)的水平Struct類(lèi)型對(duì)象,稱做水平支撐。8.2布局設(shè)計(jì)Box類(lèi)調(diào)用靜態(tài)方法createVertialStrut(intheight)可以得到一個(gè)不可見(jiàn)的垂直Struct

類(lèi)型對(duì)象,稱做垂直支撐。一個(gè)行型盒式布局的容器,可以通過(guò)在添加的組件之間插入水平支撐來(lái)控制組件之間的距離。一個(gè)列型盒式布局的容器,可以通過(guò)在添加的組件之間插入垂直支撐來(lái)控制組件之間的距離。8.2布局設(shè)計(jì)[例8-7]應(yīng)用支撐8.2布局設(shè)計(jì)2.膠水如果想處理盒式布局容器的剩余空間(容器的兩端是剩余的空間),就需要膠水組件。膠水也是不可見(jiàn)的組件,Box類(lèi)調(diào)用靜態(tài)方法createHorizontalGlue()可以得到一個(gè)不可見(jiàn)的水平Glue類(lèi)型對(duì)象,稱做水平膠水。8.2布局設(shè)計(jì)[例8-8]應(yīng)用膠水8.2布局設(shè)計(jì)null布局

向空布局的容器中添加組件時(shí),組件在容器中的顯示位置由組件本身調(diào)用setBounds方法來(lái)確定。setBounds(inta,intb,intwidth,intheight)方法是所有組件都擁有的一個(gè)方法,組件調(diào)用該方法可以設(shè)置本身的大小和在容器中的位置。

8.2布局設(shè)計(jì)在GUI程序設(shè)計(jì)中,對(duì)話框是比較常用的一類(lèi)組件,提供信息提示、文件選擇和顏色設(shè)置等功能。主要的對(duì)話框有:消息對(duì)話框確認(rèn)對(duì)話框文件對(duì)話框顏色對(duì)話框8.3對(duì)話框消息對(duì)話框

應(yīng)用程序在進(jìn)行一個(gè)重要的操作動(dòng)作之前,最好能彈出一個(gè)消息對(duì)話框??梢杂胘avax.swing包中的JOptionPane類(lèi)的靜態(tài)方法:

publicstaticvoidshowMessageDialog(ComponentparentComponent,Stringmessage,Stringtitle,intmessageType)8.3對(duì)話框[例8-9]消息對(duì)話框的應(yīng)用8.3對(duì)話框確認(rèn)對(duì)話框

確認(rèn)對(duì)話框是比較常用的對(duì)話框,可以用javax.swing包中的JOptionPane類(lèi)的靜態(tài)方法showConfirmDialog創(chuàng)建一個(gè)確認(rèn)對(duì)話框。方法為:publicstaticintshowConfirmDialog(ComponentparentComponent,Objectmessage,Stringtitle,intoptionType);

8.3對(duì)話框[例8-10]確認(rèn)對(duì)話框的應(yīng)用8.3對(duì)話框文件對(duì)話框

文件對(duì)話框是一個(gè)從文件系統(tǒng)中進(jìn)行文件選擇的界面。使用構(gòu)造方法JFileChooser()創(chuàng)建文件選擇器。文件選取器是有模式的對(duì)話框,不是初始可見(jiàn)的。下述兩個(gè)方法:showSaveDialog(Componenta);showOpenDialog(Componenta);8.3對(duì)話框[例8-11]文件對(duì)話框的應(yīng)用8.3對(duì)話框顏色對(duì)話框顏色對(duì)話框是Java提供的一個(gè)對(duì)話框,是顏色管理組件??梢杂胘avax.swing包中的JColorChooser類(lèi)的靜態(tài)方法:

publicstaticColorshowDialog(Componentcomponent,Stringtitle,ColorinitialColor)8.3對(duì)話框[例8-12]顏色對(duì)話框的應(yīng)用8.3對(duì)話框窗口事件

JFrame是Window的子類(lèi),凡是Window子類(lèi)創(chuàng)建的對(duì)象都可以發(fā)生WindowEvent類(lèi)型事件,即窗口事件。當(dāng)一個(gè)Frame窗口被激活、撤消激活、打開(kāi)、關(guān)閉、圖標(biāo)化或撤消圖標(biāo)化時(shí),就發(fā)生了窗口事件,即WindowEvent創(chuàng)建一個(gè)窗口事件對(duì)象。8.4基本事件窗口使用addWindowlistener方法獲得監(jiān)視器,創(chuàng)建監(jiān)視器對(duì)象的類(lèi)必須實(shí)現(xiàn)WindowListener接口,該接口中主要有下列方法:publicvoidwindowActivated(WindowEvente)

publicvoidwindowClosed(WindowEvente)publicvoidwindowOpened(WindowEvente)8.4基本事件[例8-13]處理窗口事件8.4基本事件鼠標(biāo)事件任何組件上都可以發(fā)生鼠標(biāo)事件。如:鼠標(biāo)進(jìn)入組件、拖動(dòng)鼠標(biāo)等都發(fā)生了鼠標(biāo)事件。使用MouseListener接口可以處理操作發(fā)生的鼠標(biāo)事件8.4基本事件MouseListener接口中有如下方法:mousePressed(MouseEvent)mouseReleased(MouseEvent)mouseEntered(MouseEvent)mouseExited(MouseEvent)mouseClicked(MouseEvent)8.4基本事件[例8-14]鼠標(biāo)事件的應(yīng)用8.4基本事件鍵盤(pán)事件當(dāng)一個(gè)組件處于激活狀態(tài)時(shí),敲擊鍵盤(pán)上一個(gè)鍵就導(dǎo)致這個(gè)組件上發(fā)生了鍵盤(pán)事件。事件源使用addKeyListener方法獲得監(jiān)視器。監(jiān)視器是一個(gè)對(duì)象,創(chuàng)建該對(duì)象的類(lèi)必須實(shí)現(xiàn)接口KeyListener

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論