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

下載本文檔

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

文檔簡介

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

只能向窗口添加一個菜單條。

8.1菜單條、菜單、菜單項菜單JMenu類的主要方法:JMenu()JMenu(Strings)publicvoidadd(JMenuItemitem)

publicMenuItem

getItem(intn)

publicvoidinsert(MenuItemitem,intn)publicvoidremove(intn)

8.1菜單條、菜單、菜單項菜單項

JMenuItem類的主要方法:JMenuItem()

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

8.1菜單條、菜單、菜單項有關(guān)菜單的幾個技巧

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

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

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

JMenu是JMenuItem的子類,因此菜單項本身還可以是一個菜單,稱這樣的菜單項為子菜單。

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

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

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

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

FlowLayout(int

aligin,int

hgap,int

vgap)publicvoidsetAlignment(intalign)

publicvoidsetHgap(int

hgap)

publicvoidsetVgap(int

vgap)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

publicvoidwindowClosed(WindowEvente)publicvoidwindowOpened(WindowEvente)8.4基本事件[例8-13]處理窗口事件8.4基本事件鼠標(biāo)事件任何組件上都可以發(fā)生鼠標(biāo)事件。如:鼠標(biāo)進入組件、拖動鼠標(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基本事件鍵盤事件當(dāng)一個組件處于激活狀態(tài)時,敲擊鍵盤上一個鍵就導(dǎo)致這個組件上發(fā)生了鍵盤事件。事件源使用addKeyListener方法獲得監(jiān)視器。監(jiān)視器是一個對象,創(chuàng)建該對象的類必須實現(xiàn)接口KeyListener

溫馨提示

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

最新文檔

評論

0/150

提交評論