




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第17講 圖形用戶界面/教學(xué)目標(biāo)掌握AWT高級(jí)組件掌握利用AWT繪圖滾動(dòng)條Scrollbar 滾動(dòng)條(Scrollbar)是AWT中常用的組件,方便用戶拖拽滾動(dòng)條來(lái)設(shè)置數(shù)值或滾動(dòng)畫(huà)面。下表列出了類(lèi)Scrollbar的構(gòu)造方法與方法。構(gòu) 造 方 法主 要 功 能Scrollbar()構(gòu)造一個(gè)新的垂直滾動(dòng)條Scrollbar(int orientation)構(gòu)造一個(gè)具有指定方向的新滾動(dòng)條Scrollbar(int orientation, int value, int visible, int minimum, int maximum)構(gòu)造一個(gè)新的滾動(dòng)條,它具有指定的方向、初始值、可視量、最小值和
2、最大值方 法主 要 功 能void addAdjustmentListener (AdjustmentListener l)添加指定的調(diào)整偵聽(tīng)器,以接收來(lái)自此滾動(dòng)條的 AdjustmentEvent 實(shí)例int getMaximum()獲得此滾動(dòng)條的最大值int getMinimum()獲得此滾動(dòng)條的最小值int getOrientation()返回此滾動(dòng)條的方向int getValue()獲得此滾動(dòng)條的當(dāng)前值boolean getValueIsAdjusting() 如果該值作為用戶執(zhí)行操作的結(jié)果正處于改變過(guò)程中,則返回 truevoid setMaximum(int newMaximum)
3、設(shè)置此滾動(dòng)條的最大值void setMinimum(int newMinimum)設(shè)置此滾動(dòng)條的最小值void setOrientation(int orientation)設(shè)置此滾動(dòng)條的方向void setValue(int newValue)將此滾動(dòng)條的值設(shè)置為指定值void setValues(int value, int visible, int minimum, int maximum)設(shè)置此滾動(dòng)條的四個(gè)屬性值:value、visibleAmount、minimum 和 maximum滾動(dòng)條說(shuō)明滾動(dòng)條的方向可以設(shè)置成水平或垂直,Scrollbar類(lèi)分別用HORIZONTAL與VERT
4、ICAL兩個(gè)常量來(lái)表示。Java為滾動(dòng)條提供了adjustmentEvent類(lèi)進(jìn)行事件處理,使用的是AdjustmentListener接口。接口提供了一個(gè)唯一的方法:void adjustmentValueChanged(adjustmentEvent e)adjustmentValueChanged()可接收adjustmentEvent類(lèi)的對(duì)象,這個(gè)對(duì)象正是當(dāng)滾動(dòng)條滾動(dòng)時(shí)觸發(fā)adjustmentEvent而傳遞給監(jiān)聽(tīng)器的。例Ex9_25滾動(dòng)條組件的使用程序分析:當(dāng)拖動(dòng)滾動(dòng)條時(shí),AdjustmentEvent事件將被觸發(fā),adjustmentValueChanged()將執(zhí)行。通過(guò)滾動(dòng)條對(duì)
5、象的getValue()方法取得滾動(dòng)條的當(dāng)前值,根據(jù)這個(gè)值設(shè)置標(biāo)簽字體的大小。 對(duì)話框Dialog 對(duì)話框(Dialog)是一種特殊的窗口,通常會(huì)利用它來(lái)處理一些簡(jiǎn)單的交互信息。Dialog與Frame類(lèi)都是繼承自Window類(lèi),它們均可放置AWT的組件。下表列出了類(lèi)Dialog的構(gòu)造方法與方法。構(gòu) 造 方 法主 要 功 能Dialog(Window owner)構(gòu)造一個(gè)初始時(shí)不可見(jiàn),無(wú)模式的對(duì)話框,帶有空標(biāo)題和指定的所有者框架Dialog(Window owner, String title)構(gòu)造一個(gè)初始時(shí)不可見(jiàn)、無(wú)模式的對(duì)話框,帶有指定的所有者 dialog 和標(biāo)題Dialog(Windo
6、w owner, String title, boolean modal)構(gòu)造一個(gè)初始時(shí)不可見(jiàn)的 Dialog,帶有指定的所有者 dialog、標(biāo)題和模式Dialog(Window owner, String title, boolean modal, GraphicsConfiguration gc)構(gòu)造一個(gè)初始時(shí)不可見(jiàn)的 Dialog,帶有指定的所有者 dialog、標(biāo)題、模式和 GraphicsConfiguration方 法主 要 功 能void addNotify()通過(guò)將此 Dialog 連接到本機(jī)屏幕資源,從而使其成為可顯示的String getTitle()獲得 dialog
7、的標(biāo)題boolean isModal()指出 dialog 是否為有模式的boolean isResizable()指出此 dialog 是否可以由用戶調(diào)整大小boolean isUndecorated()指出此 dialog 是否未裝飾void setTitle(String title)設(shè)置 Dialog 的標(biāo)題對(duì)話框常用方法例:Ex9_26對(duì)話框的使用程序分析:運(yùn)行程序,將得到一個(gè)窗口。當(dāng)按下窗口的關(guān)閉按鈕時(shí),將彈出一個(gè)對(duì)話框,如圖所示。按下對(duì)話框中的關(guān)閉按鈕,窗口將關(guān)閉。當(dāng)按下取消按鈕時(shí),將返回到初始狀態(tài)。程序中,可能會(huì)觸發(fā)兩個(gè)類(lèi)的事件,一個(gè)是按下窗口關(guān)閉按鈕所觸發(fā)的WindowEve
8、nt事件,關(guān)于這個(gè)事件,程序中使用了由WindowAdapter類(lèi)派生出來(lái)的內(nèi)部類(lèi)WinLis類(lèi)對(duì)象來(lái)監(jiān)聽(tīng)。另一個(gè)事件是對(duì)話框上的按鈕按下時(shí)所觸發(fā)的ActionEvent事件。因?yàn)镋x9_26類(lèi)由ActionListener接口實(shí)現(xiàn),所以第二個(gè)事件可以由frm窗口對(duì)象來(lái)監(jiān)聽(tīng)。菜單的設(shè)計(jì) 一般的大型程序總是離不開(kāi)菜單。在Java中,一個(gè)完整的菜單是由3個(gè)菜單欄類(lèi)所創(chuàng)建,它們分別是菜單欄(MenuBar)、菜單(Menu)、菜單項(xiàng)(MenuItem)。其中,MenuBar和MenuItem都繼承自MenuComponent類(lèi),Menu繼承自MenuItem類(lèi)。 方 法主 要 功 能MenuBar(
9、)創(chuàng)建新的菜單欄Menu add(Menu m)將指定的菜單添加到菜單欄void deleteShortcut(MenuShortcut s)刪除指定的菜單快捷方式Menu getHelpMenu()獲取該菜單欄上的幫助菜單Menu getMenu(int i)獲取指定的菜單int getMenuCount()獲取該菜單欄上的菜單數(shù)void remove(int index)從此菜單欄移除指定索引處的菜單void remove(MenuComponent m)從此菜單欄移除指定的菜單組件void setHelpMenu(Menu m)將指定的菜單設(shè)置為此菜單欄的幫助菜單菜單欄(MenuBar)
10、方 法主 要 功 能Menu()構(gòu)造具有空標(biāo)簽的新菜單Menu(String label)構(gòu)造具有指定標(biāo)簽的新菜單MenuItem add(MenuItem mi)將指定的菜單項(xiàng)添加到此菜單void add(String label)將帶有指定標(biāo)簽的項(xiàng)添加到此菜單void addSeparator()將一個(gè)分隔線或連字符添加到菜單中MenuItem getItem(int index)獲取此菜單的指定索引處的項(xiàng)int getItemCount()獲取此菜單中的項(xiàng)數(shù)void insert(MenuItem menuitem, int index)將菜單項(xiàng)插入到此菜單的指定位置void inser
11、t(String label, int index)將帶有指定標(biāo)簽的菜單項(xiàng)插入到此菜單void insertSeparator(int index)在指定的位置插入分隔符void remove(int index)從此菜單移除指定索引處的菜單項(xiàng)void remove(MenuComponent item)從此菜單移除指定的菜單項(xiàng)void removeAll()從此菜單移除所有項(xiàng)菜單(Menu) 構(gòu) 造 方 法主 要 功 能MenuItem()構(gòu)造具有空標(biāo)簽且沒(méi)有鍵盤(pán)快捷方式的新菜單項(xiàng)MenuItem(String label)構(gòu)造具有指定的標(biāo)簽且沒(méi)有鍵盤(pán)快捷方式的新菜單項(xiàng)MenuItem(St
12、ring label, MenuShortcut s)創(chuàng)建具有關(guān)聯(lián)的鍵盤(pán)快捷方式的菜單項(xiàng)菜單項(xiàng)(MenuItem) 方 法主 要 功 能void addActionListener (ActionListener l)添加指定的操作偵聽(tīng)器,以從此菜單項(xiàng)接收操作事件void deleteShortcut()刪除與此菜單項(xiàng)關(guān)聯(lián)的任何MenuShortcut對(duì)象AccessibleContext getAccessibleContext()獲取與此菜單項(xiàng)關(guān)聯(lián)的AccessibleContextString getLabel()獲取此菜單項(xiàng)的標(biāo)簽MenuShortcut getShortcut()獲取
13、與此菜單項(xiàng)關(guān)聯(lián)的MenuShortcut對(duì)象void setEnabled(boolean b)設(shè)置是否可以選擇此菜單項(xiàng)void setLabel(String label)將此菜單項(xiàng)的標(biāo)簽設(shè)置為指定標(biāo)簽void setShortcut (MenuShortcut s)設(shè)置與此菜單項(xiàng)關(guān)聯(lián)的MenuShortcut對(duì)象菜單項(xiàng)(MenuItem) 創(chuàng)建菜單欄創(chuàng)建一個(gè)菜單欄,首先必須創(chuàng)建一個(gè)MenuBar對(duì)象。通過(guò)調(diào)用窗口對(duì)象的setMenuBar()方法,將菜單欄加入到指定的窗口。再通過(guò)MenuBar對(duì)象的add()方法,將Menu對(duì)象加入到菜單中,然后將MenuItem菜單項(xiàng)通過(guò)add()方法加
14、入到各菜單中。由于Menu類(lèi)是繼承自MenuItem類(lèi)的,所以也可以將一個(gè)Menu()對(duì)象通過(guò)add()方法加入到菜單中,這就形成了子菜單。菜單欄的設(shè)計(jì)看起來(lái)很復(fù)雜,但是事件處理卻很簡(jiǎn)單,它只會(huì)觸發(fā)ActionEvent事件。具體的使用方法跟以前的按鈕事件相同。 例:Ex9_27菜單欄設(shè)計(jì)示例程序分析:同按鈕事件的處理一樣,通過(guò)getSource()方法獲取事件源,根據(jù)事件源來(lái)設(shè)置窗口內(nèi)Label對(duì)象的字體。程序看起來(lái)很長(zhǎng),實(shí)際上仔細(xì)分析并不困難,請(qǐng)讀者自行分析程序。AWT的繪圖 AWT除了提供的基本組件來(lái)創(chuàng)建圖形,還提供了Graphics類(lèi)供用戶繪制圖形。在一個(gè)窗口中,可以通過(guò)Graphic
15、s類(lèi)提供的getGraphics()方法來(lái)獲取繪圖區(qū)域。取得繪圖區(qū)域之后,就可以使用Graphics類(lèi)提供的各種繪圖方法來(lái)繪制圖形了。比如,想在窗口中繪制一個(gè)矩形,下面的語(yǔ)句就可以實(shí)現(xiàn)。 Graphics g=getGraphics(); g.drawRect(30,60,140,40); 第一條語(yǔ)句是取得窗口的繪圖區(qū),第二條語(yǔ)句是繪制長(zhǎng)方形。 Graphics類(lèi)提供了許多豐富的方法,同學(xué)們可以參考API熟悉這些方法。例:Ex9_28 AWT繪圖示例程序分析:AWT提供了一個(gè)自發(fā)性的paint()方法。paint()方法在下列情況發(fā)生時(shí),會(huì)自動(dòng)運(yùn)行:1當(dāng)新建的窗口顯示在顯示器上,或從隱藏變成顯
16、示時(shí);2從縮小圖標(biāo)還原之后;3正在改變窗口的大小時(shí)。paint()方法的格式是:public void paint(Graphics g)可以將Graphics對(duì)象傳給paint()方法,這樣一來(lái),編寫(xiě)在paint()里面的程序代碼便可在繪圖區(qū)內(nèi)繪制圖形了。上面的繪圖代碼就可以進(jìn)行改裝,將繪制矩形的代碼放在paint()方法里面,程序通過(guò)調(diào)用paint()進(jìn)行繪圖。Swing組件庫(kù)AWT設(shè)計(jì)的初衷是支持開(kāi)發(fā)小應(yīng)用程序的簡(jiǎn)單用戶界面。但是,AWT缺少剪貼板、打印支持、鍵盤(pán)導(dǎo)航等特性,而且原來(lái)的AWT甚至不包括彈出式菜單或滾動(dòng)窗格等基本元素。此外,人們使AWT適應(yīng)基于繼承的、具有很大伸縮性的事件模
17、型,基于同位體的體系結(jié)構(gòu)就成為其致命的弱點(diǎn)。Swing產(chǎn)生的主要原因就是AWT不能滿足圖形化用戶界面發(fā)展的需要。Swing概述Swing組件幾乎都是輕量組件Swing是由100%純Java實(shí)現(xiàn)的,Swing組件是用Java實(shí)現(xiàn)的輕量級(jí)( light-weight)組件,沒(méi)有本地代碼,不依賴操作系統(tǒng)的支持,這是它與AWT組件的最大區(qū)別。Swing采用了一種MVC的設(shè)計(jì)范式,即“模型-視圖-控制”(Model-View-Controller),其中模型用來(lái)保存內(nèi)容,視圖用來(lái)顯示內(nèi)容,控制器用來(lái)控制用戶輸入。Swing比AWT提供了更多的組件,這些組件都在javax.swing包中定義,按功能分類(lèi)有
18、下面幾種。 1頂層容器組件(Top-Level Containers) JFrame,JDialog,JApplet,JSplitPane,JTabbedPane,JToolbar2特殊用途容器組件(Special-Purpose Containers) JInteralFrame,JLayeredFrame,JRootPane3基本組件(Basic Controls) JButton,JComboBox,JList,JMenu,JSlider,JTextField,JTextArea4信息顯示組件(Uneditable Information Displays) JLabel,JProgressBar,JTooltip5格式化信息輸入組件(Editable Displays of Formatted Information) JColorChooser,JFileChooser,JTable,JTreeSwing概述Swing基本組件的使用向JFrame中添加組件的方法與AWT中向Frame中添加組件略
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療服裝購(gòu)銷(xiāo)合同范本
- 獸醫(yī)免疫學(xué)模擬試題
- 初級(jí)經(jīng)濟(jì)師(人力資源專(zhuān)業(yè))模擬習(xí)題
- 廚具公司合同范本
- 下學(xué)期八年級(jí)英語(yǔ)教學(xué)總結(jié) -教學(xué)工作總結(jié)
- 中藥炮制題庫(kù)(含答案)
- 植物生產(chǎn)與環(huán)境測(cè)試題含參考答案
- 關(guān)于社保補(bǔ)充合同范本
- 一年級(jí)小學(xué)生入隊(duì)申請(qǐng)書(shū)
- 一年級(jí)下冊(cè)語(yǔ)文教學(xué)反思
- GB/T 17689-2008土工合成材料塑料土工格柵
- GB/T 13734-2008耳穴名稱與定位
- 適航法規(guī)基礎(chǔ)培訓(xùn)
- 2023版初中化學(xué)跨學(xué)科實(shí)踐活動(dòng)(化學(xué))
- 植物保護(hù)學(xué)通論-植物病害分析課件
- 藥品經(jīng)營(yíng)質(zhì)量管理規(guī)范(GSP)實(shí)用教程教學(xué)課件
- 機(jī)械基礎(chǔ) 第2版全書(shū)電子教案
- 外研社一起英語(yǔ)四年級(jí)下冊(cè)課文
- DB32-T 2705-2014公路工程地質(zhì)勘察監(jiān)理規(guī)程-(高清現(xiàn)行)
- After-Effects影視特效設(shè)計(jì)教程完整版全套ppt課件
- 醫(yī)療設(shè)備清單
評(píng)論
0/150
提交評(píng)論