版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十九JavaGUI編程高級(jí)本講主要內(nèi)容:給GUI應(yīng)用程序添加菜單“JavaEditor”項(xiàng)目的界面更新為組件定制彈出式菜單給GUI應(yīng)用程序添加工具欄1一、給GUI應(yīng)用程序添加菜單
2菜單概述
菜單的作用:給應(yīng)用程序設(shè)置操作菜單。
菜單組成JMenuItem---菜單項(xiàng),直接指向一個(gè)具體的操作JMenu---菜單,其中可加入菜單項(xiàng)(JMenuItem)和菜單(Jmenu)JMenuBar----菜單欄,在其中可以加入菜單(JMenu)3菜單的創(chuàng)建和組織菜單的創(chuàng)建JMenu、JMenuBar和JMenuItem類的構(gòu)造方法見(jiàn)表:如創(chuàng)建一個(gè)“File”菜單:JMenufile=newJMenu("File");
4菜單的創(chuàng)建和組織(續(xù))菜單的組織菜單欄可象別的組件一樣添加到應(yīng)用程序窗口。JFrame窗口加入菜單欄的方法: publicvoidsetJMenuBar(JMenuBarmenubar)JMenuBar加入JMenu的方法: publicJMenuadd(JMenuc)JMenu中加入JMenu、JMenuItem、分隔線的方法: publicJMenuItemadd(JMenuItemmenuItem) publicvoidaddSeparator()說(shuō)明:因JMenu是JMenuItem的子類,故add(JMenuItemmenuItem)也可加入JMenu菜單。 如:(newJMenuItem("New")); ();5菜單的創(chuàng)建和組織(續(xù))快捷鍵設(shè)置JMenu的快捷鍵通常是Alt+字符鍵的組合,可用setMnemonic方法設(shè)置:
JMenu對(duì)象.setMnemonic(intmnemonic);JMenuItem的快捷鍵可以是Ctrl+字符鍵或Alt+字符鍵的組合,可用setAccelerator方法設(shè)置:JMenuItem對(duì)象.setAccelerator(KeyStroke.getKeyStroke(參數(shù)1,參數(shù)2)); 參數(shù)1指向快捷鍵字符。參數(shù)2指向控制字符,通常是KeyEvent.CTRL_MASK(Ctrl),KeyEvent.ALT_MASK(Alt)。如:open.setAccelerator(KeyStroke.getKeyStroke('O', KeyEvent.CTRL_MASK));可給“open”菜單項(xiàng)設(shè)置快捷鍵“Ctrl+O”。6菜單項(xiàng)的事件處理
當(dāng)用戶選定一個(gè)菜單項(xiàng)時(shí),該菜單項(xiàng)將發(fā)生ActionEvent事件。關(guān)于ActionEvent事件的處理,重申三要點(diǎn):
(1)安裝偵聽(tīng)器(implementsActionListener)(2)通過(guò)addActionListener方法設(shè)置偵聽(tīng)(3)重寫(xiě)方法actionPerformed實(shí)現(xiàn)事件處理7二、“JavaEditor”項(xiàng)目的界面更新
8界面設(shè)計(jì)新的界面將按鈕的功能集合到菜單欄中。界面元素菜單,集合了所有的功能。嵌入滾動(dòng)面板的多行文本框,用于文本顯示和編輯。9界面設(shè)計(jì)(續(xù))“Edit”對(duì)文本區(qū)域操作,可以實(shí)現(xiàn):復(fù)制、剪切、粘貼以及全選?!癏elp”“About”將彈出About窗口。參考界面如圖所示。
10程序?qū)崿F(xiàn):importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;classNewEditorextendsJFrame{JMenuBarmnb;//菜單欄JMenu;//各菜單JMenuItemNew,open,save,exit;//File下的菜單項(xiàng)JMenuItemcopy,cut,paste,selectall;//Edit下的菜單項(xiàng)JMenuItemfc,bc,dc;//Config下的菜單項(xiàng)JMenuItemabout;//Help下的菜單項(xiàng)JTextAreat;NewEditor(){super("JavaEditor");setDefaultCloseOperation(3);editInit();this.add(newJScrollPane(t));this.setJMenuBar(mnb);this.setBounds(200,200,600,400);this.setVisible(true);}11
privatevoideditInit(){t=newJTextArea();t.setLineWrap(true);file=newJMenu("File");('F');New=newJMenuItem("New");open=newJMenuItem("Open");save=newJMenuItem("Save");exit=newJMenuItem("Exit");(New);(open);();(save);();(exit);edit=newJMenu("Edit");edit.setMnemonic('E');copy=newJMenuItem("Copy");paste=newJMenuItem("Paste");cut=newJMenuItem("Cut");12
edit.add(cut);edit.add(copy);edit.add(paste);edit.addSeparator();
edit.add(selectall);config=newJMenu("Config");config.setMnemonic('C');bc=newJMenuItem("BackColor");fc=newJMenuItem("ForeColor");dc=newJMenuItem("DefaultColor");config.add(fc);config.add(bc);config.addSeparator();config.add(dc);help=newJMenu("Help");help.setMnemonic('H');about=newJMenuItem("About");help.add(about);mnb=newJMenuBar();mnb.add((edit);mnb.add(config);mnb.add(help);}publicstaticvoidmain(String[]args){newNewEditor();}}13三、為組件定制彈出式菜單
14問(wèn)題的提出
為“JavaEditor”程序的文本編輯區(qū)域定制如圖所示的的彈出式菜單。菜單中有五個(gè)菜單項(xiàng)組成,分別指示了不同的字體風(fēng)格,可通過(guò)菜單項(xiàng)的選擇實(shí)現(xiàn)文本區(qū)域中文本字體和字號(hào)的改變。
15用JPopupMenu類建立彈出式菜單
建立彈出式菜單 預(yù)先定義一個(gè)繼承JPopupMenu類的子類,彈出式菜單施加給的對(duì)象應(yīng)由構(gòu)造方法中的參數(shù)接收。本例應(yīng)是負(fù)責(zé)文本編輯的多行文本框。 JPopupMenu類的add方法允許向菜單中加入菜單項(xiàng)。彈出式菜單項(xiàng)的激活事件是ActionEvent,可依照多按鈕的事件處理方法進(jìn)行事件處理。16字體風(fēng)格彈出式菜單的實(shí)現(xiàn):importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjavax.swing.border.BevelBorder;classFontPopupextendsJPopupMenuimplementsActionListener{String[]item;
Font[]font;JMenuItemmt;
JTextAreat;FontPopup(JTextAreat){this.t=t;
this.setBorder(newBevelBorder(BevelBorder.RAISED));//設(shè)置立體邊框item=newString[]{"標(biāo)準(zhǔn)仿宋","粗放行楷","規(guī)矩新魏","精致宋體","靈感隸書(shū)"};font=newFont[]{newFont("仿宋",0,18),newFont("華文行楷",0,30),
newFont("華文新魏",0,22),newFont("宋體",0,14),
newFont("隸書(shū)",0,20)};for(inti=0;i<item.length;i++){mt=newJMenuItem(item[i]);
mt.setFont(newFont("仿宋",0,14));this.add(mt);
mt.addActionListener(this);}}
17
publicvoidactionPerformed(ActionEvente){Strings=e.getActionCommand();inti;for(i=0;i<item.length;i++)if(s.equals(item[i]))break;t.setFont(font[i]);}}18用JPopupMenu類建立彈出式菜單
為多行文本框定制彈出式菜單 讓以上的彈出式菜單對(duì)文本框真實(shí)可用,就需要對(duì)文本框設(shè)置事件偵聽(tīng)??赏ㄟ^(guò)MouseEvent的getButton()方法判斷用戶按下了哪個(gè)鼠標(biāo)鍵:
MouseEvent.BUTTON1——左鍵
MouseEvent.BUTTON2——中間鍵
MouseEvent.BUTTON3——右鍵19多行文本框帶彈出式菜單的實(shí)現(xiàn):importjava.awt.event.*;importjavax.swing.*;classJTextAreaWithMenuextendsJTextAreaimplementsMouseListener{ FontPopupfp; JTextAreaWithMenu(intr,intc){ super(r,c); fp=newFontPopup(this); this.addMouseListener(this); this.add(fp); } publicvoidmousePressed(MouseEvente){ if(e.getButton()==e.BUTTON3)fp.show(this,e.getX(),e.getY()); } publicvoidmouseClicked(MouseEvente){} publicvoidmouseEntered(MouseEvente){} publicvoidmouseExited(MouseEvente){} publicvoidmouseReleased(MouseEvente){}}
20四、給GUI應(yīng)用程序添加工具欄
21問(wèn)題提出
繼續(xù)對(duì)“JavaEditor”項(xiàng)目進(jìn)行更新,再為界面添加如圖所示的工具欄。
工具欄上流式順序排放了七個(gè)工具按鈕,作用分別是:新建文件、打開(kāi)文件、保存文件、復(fù)制、剪切、粘貼、幫助。22工具欄界面設(shè)計(jì)步驟創(chuàng)建工具欄對(duì)象將組件加入到工具欄將工具欄加入到應(yīng)用程序窗口23工具欄界面設(shè)計(jì)(續(xù))創(chuàng)建工具欄對(duì)象 工具欄用JToolBar類及其子類創(chuàng)建,它是一個(gè)容器組件,在工具欄組件中可以容放其他組件。
JToolBar的構(gòu)造方法:
publicJToolBar():默認(rèn)方向?yàn)樗剑℉ORIZONTAL)。publicJToolBar(intorientation):指定方向,參數(shù)可選HORIZONTAL或VERTICAL,后者為豎式工具欄。publicJToolBar(Stringname):指定標(biāo)題,標(biāo)題浮動(dòng)時(shí)可見(jiàn)。默認(rèn)的方向?yàn)镠ORIZONTAL。24工具欄界面設(shè)計(jì)(續(xù))將組件加入到工具欄 工具欄設(shè)置布局:setLayout方法,默認(rèn)FlowLayout流式排放。 工具欄添加組件:add方法向。也可通過(guò)“addSeparator()”方法在工具欄中加入分隔,以對(duì)工具按鈕按功能分組。
將工具欄加入到應(yīng)用程序窗口 JFrame類的add方法,可將工具欄加入進(jìn)應(yīng)用程序窗口,同時(shí)確定停放位置。 如: this.add(t
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個(gè)人自建別墅地基買賣合同7篇
- 2025年度泥漿外運(yùn)承包合同(含廢棄物處理政策研究)4篇
- 2025年度電商品牌授權(quán)與特許經(jīng)營(yíng)協(xié)議4篇
- 2025年度個(gè)人債權(quán)轉(zhuǎn)讓合同范本全文3篇
- 2025年度高端餐飲店鋪?zhàn)赓U合同-餐飲服務(wù)及品牌合作協(xié)議3篇
- 2025年度全國(guó)連鎖美容院股東權(quán)益分配與經(jīng)營(yíng)管理合作協(xié)議書(shū)4篇
- 二零二五年度工廠生產(chǎn)區(qū)衛(wèi)生管理與清潔合同2篇
- 2025年度門面租賃合同電子簽名范本3篇
- 二零二五版苗木種植與生物多樣性保護(hù)合作協(xié)議4篇
- 2025年儲(chǔ)罐租賃及安全防護(hù)設(shè)施安裝協(xié)議4篇
- 實(shí)體瘤療效評(píng)價(jià)標(biāo)準(zhǔn)(RECIST11)
- 電力系統(tǒng)動(dòng)態(tài)仿真與建模
- 蝦皮shopee新手賣家考試題庫(kù)及答案
- 四川省宜賓市2023-2024學(xué)年八年級(jí)上學(xué)期期末義務(wù)教育階段教學(xué)質(zhì)量監(jiān)測(cè)英語(yǔ)試題
- 價(jià)值醫(yī)療的概念 實(shí)踐及其實(shí)現(xiàn)路徑
- 2024年中國(guó)華能集團(tuán)燃料有限公司招聘筆試參考題庫(kù)含答案解析
- 《紅樓夢(mèng)》中的男性形象解讀
- 安全生產(chǎn)技術(shù)規(guī)范 第49部分:加油站 DB50-T 867.49-2023
- 《三國(guó)演義》中的語(yǔ)言藝術(shù):詩(shī)詞歌賦的應(yīng)用
- 腸外營(yíng)養(yǎng)液的合理配制
- 消防安全教育培訓(xùn)記錄表
評(píng)論
0/150
提交評(píng)論