




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
任務(wù)五字體設(shè)置菜單設(shè)計單元四:圖形用戶界面程序設(shè)計教學(xué)目標知識目標菜單欄;下拉式菜單;彈出式菜單;鼠標事件。能力目標能會使用JMenuBar、JMenu和JMenuItem構(gòu)造應(yīng)用程序菜單;能會使用JPopupMenu構(gòu)造應(yīng)用程序彈出式菜單;能會處理鼠標事件。教學(xué)內(nèi)容4任務(wù)陳述123知識準備任務(wù)實施任務(wù)拓展任務(wù)實訓(xùn)5 1.任務(wù)陳述任務(wù)描述本次任務(wù)是設(shè)計一個帶有菜單的圖形用戶界面程序,使用級聯(lián)菜單控制文字的字體和顏色,運行結(jié)果如下圖所示
2.知識準備真正的GUI應(yīng)用程序缺少不了菜單,它可以給用戶提供簡明清晰的信息,讓用戶從多個項目中進行選擇,又可以節(jié)省界面空間。位于窗口頂部的菜單欄和其子菜單一般會包括一個應(yīng)用程序的所有方法和功能,是比較重要的組件 2.知識準備下拉式菜單一個完整的菜單系統(tǒng)包括:菜單欄JMenuBar,裝配到菜單欄上的菜單JMenu,菜單上的菜單項JMenuItem。菜單項的作用與按鈕相似,用戶點擊時引發(fā)一個ActionEvent使用菜單欄的程序必須是JFrame的子類JMenuBar是整個下拉式菜單的根,是JMenu的容器。在一個時刻,一個主窗口可以顯示一個菜單欄??梢愿鶕?jù)程序的需要切換菜單欄,這樣在不同的時刻就可以顯示不同的菜單 2.知識準備下拉式菜單JMenu提供了一個基本的下拉式菜單,可以包含若干JMenuItem。JMenu需要添加到JMenuBar上。JMenuItem是菜單樹的“葉”結(jié)點,菜單子項組件需要添加到菜單項。一個菜單子項(JmenuItem)的標題是一個字符串,可以使用菜單項JMenu類的addSeperator()方法添加水平分割線 2.知識準備下拉式菜單JCheckboxMenuItem類用于創(chuàng)建復(fù)選菜單項。當(dāng)選中復(fù)選框菜單子項時,在該菜單子項左邊出現(xiàn)一個選擇標記,如果再次選中該項,則該選項左邊的選擇標記就會消失JRadioButtonMenuItem類用于創(chuàng)建帶有單選菜單項,屬于一組菜單項中的一項,該組中只能選擇一個項,被選擇的項顯示其選擇狀態(tài),選擇此項的同時,其他任何以前被選擇的項都切換到未選擇的狀態(tài) 2.知識準備下拉式菜單在程序中使用菜單的基本過程是:首先創(chuàng)建一個菜單欄(JMenuBar);其次創(chuàng)建若干菜單項(JMenu),并把它們添加到(JMenuBar)中;再次,創(chuàng)建若干個菜單子項(JMenuItem),或者創(chuàng)建若干個帶有復(fù)選框的菜單子項(JCheckboxMenuItem),并把它們分類別地添加到每個JMenu中;最后,通過JFrame類的setJMenuBar()方法,將菜單欄JMenuBar添加到框架上,使之能夠顯示 2.知識準備(表21-1)方法名方法功能JMenuBar()構(gòu)造新菜單欄JMenuBarJMenugetMenu(intindex)返回菜單欄中指定位置的菜單intgetMenuCount()返回菜單欄上的菜單數(shù)voidpaintBorder(Graphicsg)如果BorderPainted屬性為true,則繪制菜單欄的邊框voidsetBorderPainted(booleanb)設(shè)置是否應(yīng)該繪制邊框voidsetHelpMenu(JMenumenu)設(shè)置用戶選擇菜單欄中的“幫助”選項時顯示的幫助菜單voidsetMargin(Insetsm)設(shè)置菜單欄的邊框與其菜單之間的空白voidsetSelected(Componentsel)設(shè)置當(dāng)前選擇的組件,更改選擇模型 2.知識準備方法名方法功能JMenu()構(gòu)造沒有文本的新JMenuJMenu(Actiona)構(gòu)造一個從提供的Action獲取其屬性的菜單JMenu(Strings)構(gòu)造一個新JMenu,用提供的字符串作為其文本JMenu(Strings,booleanb)構(gòu)造一個新JMenu,用提供的字符串作為其文本并指定其是否為分離式(tear-off)菜單voidadd()將組件或菜單項追加到此菜單的末尾voidaddMenuListener(MenuListenerl)添加菜單事件的偵聽器voidaddSeparator()將新分隔符追加到菜單的末尾voiddoClick(intpressTime)以編程方式執(zhí)行“單擊”JMenuItemgetItem(intpos)返回指定位置的JMenuItemvoidsetMenuLocation(intx,inty)設(shè)置彈出組件的位置 2.知識準備方法名方法功能intgetItemCount()返回菜單上的項數(shù),包括分隔符JMenuIteminsert(Actiona,intpos)在給定位置插入連接到指定Action對象的新菜單項JMenuIteminsert(JMenuItemmi,intpos)在給定位置插入指定的JMenuitemvoidinsert(Strings,intpos)在給定的位置插入一個具有指定文本的新菜單項voidinsertSeparator(intindex)在指定的位置插入分隔符booleanisSelected()如果菜單是當(dāng)前選擇的(即突出顯示的)菜單,則返回truevoidremove()從此菜單移除組件或菜單項voidremoveAll()從此菜單移除所有菜單項voidsetDelay(intd)設(shè)置菜單的PopupMenu向上或向下彈出前建議的延遲voidsetMenuLocation(intx,inty)設(shè)置彈出組件的位置
2.知識準備方法名方法功能JMenuItem()創(chuàng)建不帶有設(shè)置文本或圖標的JMenuItemJMenuItem(Actiona)創(chuàng)建一個從指定的Action獲取其屬性的菜單項JMenuItem(Iconicon)創(chuàng)建帶有指定圖標的JMenuItemJMenuItem(Stringtext)創(chuàng)建帶有指定文本的JMenuItemJMenuItem(Stringtext,Iconicon)創(chuàng)建帶有指定文本和圖標的JMenuItemJMenuItem(Stringtext,intmnemonic)創(chuàng)建帶有指定文本和鍵盤助記符的JMenuItembooleanisArmed()返回菜單項是否被“調(diào)出”voidsetArmed(booleanb)將菜單項標識為“調(diào)出”voidsetEnabled(booleanb)啟用或禁用菜單項voidsetAccelerator(KeyStrokekeystroke)設(shè)置菜單項的快捷鍵voidsetMnemonic(charmnemonic)設(shè)置菜單項的熱鍵KeyStrokegetAccelerator()返回菜單項的快捷鍵 2.知識準備方法名方法功能JCheckBoxMenuItem()創(chuàng)建一個不帶有設(shè)置文本或圖標的復(fù)選菜單項JCheckBoxMenuItem(Stringtext)創(chuàng)建一個有指定文本的復(fù)選菜單項JCheckBoxMenuItem(Iconicon)創(chuàng)建一個帶有指定圖標的復(fù)選菜單項JChcckBoxMenuItem(Stringtext,Iconicon)創(chuàng)建一個有文本和圖標的復(fù)選菜單項JCheckBoxMenulte(Stringtext,Booleanb)創(chuàng)建一個有文本和設(shè)置選擇狀態(tài)復(fù)選菜單項JChcckBoxMenuItem(Stringtext,Iconicon,Booleanb)創(chuàng)建一個有文本、圖標和設(shè)置選擇狀態(tài)的復(fù)選菜單項BooleangetState()返回菜單項的選定狀態(tài)voidsetState(Booleanb)設(shè)置該項的選定狀態(tài)
2.知識準備方法名方法功能JRadioButtonMenuItem()創(chuàng)建一個新的單選菜單項JRadioButtonMenuItem(Stringtext)創(chuàng)建一個有指定文本的單選菜單項JRadioButtonMenuItem(Iconicon)創(chuàng)建一個帶有指定圖標的單選菜單項JRadioButtonMenuItem(Stringtext,Iconicon)創(chuàng)建一個有文本和圖標的單選菜單項JRadioButtonMenulte(Stringtext,Booleanselected)創(chuàng)建一個有文本和設(shè)置選擇狀態(tài)的單選菜單項JRadioButtonMenuItem(Iconicon,Booleanselected)創(chuàng)建一個有圖標和設(shè)置選擇狀態(tài)的單選菜單項JRadioButtonMenuItem(Stringtext,Iconicon,Booleanselected)創(chuàng)建一個有文本、圖標和設(shè)置選擇狀態(tài)的單選菜單項 3.任務(wù)實施實施思路與方案:任務(wù)四中已經(jīng)講述了如何設(shè)置字體,本任務(wù)中通過菜單來選擇字體。通過JMenuBar實現(xiàn)菜單欄,JMenu實現(xiàn)菜單,JMenuItem實現(xiàn)菜單項,JCheckBoxMenuItem實現(xiàn)帶復(fù)選按鈕的菜單項,addSeparator方法添加水平分割線,setMnemonic方法添加菜單的快捷鍵 3.任務(wù)實施解決步驟:1)定義一個MenuTest菜單類,繼承自窗體類JFrame,并實現(xiàn)ActionListener接口2)定義MenuTest構(gòu)造方法,首先通過JMenuBar建立一個菜單欄,然后使用JMenu建立菜單,每個菜單再通過JMenuItem建立菜單項3)定義actionPerformed單擊菜單項處理方法做相應(yīng)處理
3.任務(wù)實施導(dǎo)入相關(guān)包importjavax.swing.*;importjava.awt.event.*;importjava.awt.*;聲明主窗口類publicclassMenuTestextendsJFrameimplementsActionListener{} 3.任務(wù)實施聲明和創(chuàng)建菜單欄、菜單和菜單項對象:
JMenuBarjmb=newJMenuBar(); JMenufontMenu=newJMenu("字體(F)"); JMenuhelpMenu=newJMenu("幫助"); JMenustyleMenu=newJMenu("樣式"); JMenucolorMenu=newJMenu("顏色"); JMenuItemexitMenu=newJMenuItem("退出"); JMenuItemaboutMenu=newJMenuItem("關(guān)于"); 3.任務(wù)實施菜單項、文本區(qū)域?qū)ο舐暶鲃?chuàng)建JCheckBoxMenuItemboldMenu=newJCheckBoxMenuItem("粗體(B)");JCheckBoxMenuItemitalicMenu=newJCheckBoxMenuItem("斜體"); JMenuItemredMenu=newJMenuItem("紅色"); JMenuItemgreenMenu=newJMenuItem("綠色"); JMenuItemblueMenu=newJMenuItem("藍色"); JTextAreatxtDemo=newJTextArea("示例文字"); intbold,italic;//用于記錄粗體、斜體選擇的變量 3.任務(wù)實施構(gòu)造方法MenuTest的內(nèi)容:
setJMenuBar(jmb); //設(shè)置窗口菜單欄 jmb.add(fontMenu); //往菜單欄添加菜單 jmb.add(helpMenu);//往菜單欄添加菜單 //設(shè)置菜單快捷鍵 fontMenu.setMnemonic(KeyEvent.VK_F); boldMenu.setMnemonic(KeyEvent.VK_B); 3.任務(wù)實施構(gòu)造方法MenuTest的內(nèi)容: fontMenu.add(styleMenu);//添加菜單項到菜單 fontMenu.add(colorMenu); fontMenu.addSeparator();//添加水平分割線
fontMenu.add(exitMenu); fontMenu.add(aboutMenu); styleMenu.add(boldMenu); styleMenu.add(italicMenu);
3.任務(wù)實施構(gòu)造方法MenuTest的內(nèi)容: colorMenu.add(redMenu);//添加菜單項到菜單 colorMenu.add(greenMenu); colorMenu.add(blueMenu); //為菜單項添加事件監(jiān)聽器 exitMenu.addActionListener(this); aboutMenu.addActionListener(this); 3.任務(wù)實施構(gòu)造方法MenuTest的內(nèi)容: //為菜單項添加事件監(jiān)聽器
boldMenu.addActionListener(this); italicMenu.addActionListener(this);
redMenu.addActionListener(this); greenMenu.addActionListener(this); blueMenu.addActionListener(this); 3.任務(wù)實施構(gòu)造方法MenuTest的內(nèi)容://文本區(qū)添加到窗口getContentPane().add(txtDemo);//設(shè)置窗口標題、大小等
setTitle("菜單控制字體和顏色");setSize(350,250);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
3.任務(wù)實施actionPerformed方法內(nèi)容:
//設(shè)置文本區(qū)域前景色 Stringcmd=e.getActionCommand(); if(cmd.equals("紅色")) txtDemo.setForeground(Color.RED); elseif(cmd.equals("綠色")) txtDemo.setForeground(Color.GREEN); elseif(cmd.equals("藍色")) txtDemo.setForeground(Color.BLUE); 3.任務(wù)實施actionPerformed方法內(nèi)容:elseif(cmd.equals("粗體")) bold=boldMenu.isSelected()?Font.BOLD:Font.PLAIN;elseif(cmd.equals("斜體")) italic=italicMenu.isSelected()?Font.ITALIC:Font.PLAIN;elseif(cmd.equals("退出")) System.exit(0); txtDemo.setFont(newFont("Serif",bold+italic,24));
3.任務(wù)實施main
方法內(nèi)容,創(chuàng)建窗口對象: publicstaticvoidmain(String[]args){ MenuTesttm=newMenuTest(); }
4.任務(wù)拓展彈出式菜單彈出式菜單(JPopupMenu),也稱快捷菜單,它可以附加在任何組件上使用。當(dāng)在附有快捷菜單的組件上單擊鼠標右鍵時,即顯示出快捷菜單彈出式菜單的結(jié)構(gòu)與下拉式菜單中的菜單項JMenu類似,一個彈出式菜單包含有若干個菜單子項JMenuItem。只是,這些菜單子項不是裝配到JMenu中,而是裝配到JPopupMenu中方法show(Componentorigin,int,inty)用于在相對于組件的x、y位置顯示彈出式菜單 4.任務(wù)拓展彈出式菜單菜單與其他組件有一個重要的不同:不能將菜單添加到一般的容器中,而且不能使用布局管理器對它們進行布局。彈出式菜單因為可以以浮動窗口形式出現(xiàn),因此也不需要布局不論是彈出式菜單還是下拉式菜單,僅在其某個菜單子項(JMenuItem類或JCheckboxMenuItem類)被選中時才會產(chǎn)生事件 4.任務(wù)拓展彈出式菜單當(dāng)一個JMenuItem類菜單子項被選中時,產(chǎn)生ActionEvent事件對象;當(dāng)一個JCheckboxMenuItem類菜單子項被選中或被取消選中時,產(chǎn)生ItemEvent事件對象。ActionEvent事件、ItemEvent事件分別由ActionListener接口和ItemListener接口來監(jiān)聽處理。當(dāng)菜單中既有JMenuItem類的菜單子項,又有JCheckboxMenuItem類的菜單子項時,必須同時實現(xiàn)ActionListener接口和ItemListener接口,才能處理菜單上的事件 4.任務(wù)拓展方法名方法功能JPopupMenu()構(gòu)造一個不帶“調(diào)用者”的JPopupMenuJPopupMenu(Strings)構(gòu)造一個具有指定標題的JPopupMenubooleanisVisible()如果彈出菜單可見(當(dāng)前顯示的),則返回trueStringgetLabel()返回彈出菜單的標簽voidinsert(Componentcomponent,int_index)將指定組件插入到菜單的給定位置voidpack()布置容器,讓它使用顯示其內(nèi)容所需的最小空間voidsetLocation(intx,inty)使用X、Y坐標設(shè)置彈出菜單的左上角的位置voidsetPopupSize(Dimensiond)使用Dimension對象設(shè)置彈出窗口的大小voidsetPopupSize(intwidth,intheight)將彈出窗口的大小設(shè)置為指定的寬度和高度voidsetVisible(booleanb)設(shè)置彈出菜單的可見性voidshow(Componentinvoker,intx,inty)在組件調(diào)用者的坐標空間中的位置X、Y顯示彈出菜單
4.任務(wù)拓展鼠標事件處理(MouseEvent)對應(yīng)兩個接口:MouseListener和MouseMotionListenerMouseListener共有五個方法mousePressed(MouseEvente)處理按下鼠標左鍵mouseClicked(MouseEvente)處理鼠標單擊mouseReleased(MouseEvente)處理鼠標按鍵釋放mouseEntered(MouseEvente)處理鼠標進入當(dāng)前窗口mouseExited(MouseEvente)處理鼠標離開當(dāng)前窗口 4.任務(wù)拓展MouseMotionListener有兩個方法mou
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 欄桿承包合同協(xié)議書
- 地鐵工程施工方案
- 上海室內(nèi)消防工程合同
- 奢侈品質(zhì)押擔(dān)保合同
- 花箱花卉施工方案
- 2025年人力資源制度:趣味運動會活動策劃方案
- 旱地改水田施工方案
- 森林防火通道施工方案
- 茂名水幕電影施工方案
- 廣西河池市宜州區(qū)2024-2025學(xué)年七年級上學(xué)期期末生物試題(原卷版+解析版)
- GB/T 44536-2024CVD陶瓷涂層熱膨脹系數(shù)和殘余應(yīng)力試驗方法
- 現(xiàn)代家政導(dǎo)論-課件 6.1.1認識道德與職業(yè)道德
- 北京市東城區(qū)2022-2023學(xué)年高三上學(xué)期期末考試地理試卷 含答案
- 深圳益電通變頻器說明書TD90
- 人教版初中八年級物理上冊課件-第1章-機械運動
- 《中小型無人駕駛航空器垂直起降場技術(shù)要求》編制說明
- 國有企業(yè)內(nèi)部控制的問題與改進措施
- 企業(yè)員工健康管理與關(guān)懷計劃實施方案
- 爭做“四有好老師”-當(dāng)好“四個引路人”
- 護理美學(xué)-第五章 護士的服飾美
- DLT 572-2021 電力變壓器運行規(guī)程
評論
0/150
提交評論