




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第十九Java GUI编程高级,本讲主要内容: 给GUI应用程序添加菜单 “Java Editor”项目的界面更新 为组件定制弹出式菜单 给GUI应用程序添加工具栏,一、给GUI应用程序添加菜单,菜单概述,菜单的作用:给应用程序设置操作菜单。 菜单组成 JMenuItem-菜单项,直接指向一个具体的操作 JMenu-菜单,其中可加入菜单项(JMenuItem)和菜单(Jmenu) JMenuBar-菜单栏,在其中可以加入菜单(JMenu),菜单的创建和组织,菜单的创建 JMenu、JMenuBar和JMenuItem类的构造方法见表: 如创建一个“File”菜单:JMenu file = ne
2、w JMenu(File);,菜单的创建和组织(续),菜单的组织 菜单栏可象别的组件一样添加到应用程序窗口。 JFrame窗口加入菜单栏的方法: public void setJMenuBar(JMenuBar menubar) JMenuBar加入JMenu的方法: public JMenu add(JMenu c) JMenu中加入JMenu、JMenuItem、分隔线的方法: public JMenuItem add(JMenuItem menuItem) public void addSeparator() 说明:因JMenu是JMenuItem的子类,故add(JMenuItem m
3、enuItem)也可加入JMenu菜单。 如:file.add(new JMenuItem(New); file.addSeparator();,菜单的创建和组织(续),快捷键设置 JMenu的快捷键通常是Alt + 字符键的组合,可用setMnemonic方法设置: JMenu对象.setMnemonic(int mnemonic); JMenuItem的快捷键可以是Ctrl + 字符键或Alt + 字符键的组合,可用setAccelerator方法设置: JMenuItem对象.setAccelerator(KeyStroke.getKeyStroke(参数1,参数2); 参数1指向快捷键
4、字符。参数2指向控制字符,通常是KeyEvent. CTRL_MASK(Ctrl),KeyEvent.ALT_MASK(Alt)。 如:open.setAccelerator(KeyStroke.getKeyStroke(O, KeyEvent.CTRL_MASK); 可给“open”菜单项设置快捷键“Ctrl + O”。,菜单项的事件处理,当用户选定一个菜单项时,该菜单项将发生ActionEvent事件。关于ActionEvent事件的处理,重申三要点: (1) 安装侦听器 (implements ActionListener) (2) 通过addActionListener方法设置侦听 (
5、3) 重写方法actionPerformed实现事件处理,二、“Java Editor”项目的界面更新,界面设计,新的界面将按钮的功能集合到菜单栏中。 界面元素 菜单,集合了所有的功能。 嵌入滚动面板的多行文本框,用于文本显示和编辑。,界面设计(续),“Edit”对文本区域操作,可以实现:复制、剪切、粘贴以及全选。 “Help”“About”将弹出About窗口。参考界面如图所示。,程序实现: import java.awt.*; import java.awt.event.*; import javax.swing.*; class NewEditor extends JFrame JMen
6、uBar mnb; /菜单栏 JMenu file,edit,config,help; /各菜单 JMenuItem New,open,save,exit; /File下的菜单项 JMenuItem copy,cut,paste,selectall; /Edit下的菜单项 JMenuItem fc,bc,dc; /Config下的菜单项 JMenuItem about; /Help下的菜单项 JTextArea t; NewEditor() super(Java Editor); setDefaultCloseOperation(3); editInit(); this.add(new JSc
7、rollPane(t); this.setJMenuBar(mnb); this.setBounds(200,200,600,400); this.setVisible(true); ,private void editInit() t = new JTextArea(); t.setLineWrap(true); file = new JMenu(File); file.setMnemonic(F); New = new JMenuItem(New); open = new JMenuItem(Open); save = new JMenuItem(Save); exit = new JMe
8、nuItem(Exit); file.add(New); file.add(open); file.addSeparator(); file.add(save); file.addSeparator(); file.add(exit); edit = new JMenu(Edit); edit.setMnemonic(E); copy = new JMenuItem(Copy); paste = new JMenuItem(Paste); cut = new JMenuItem(Cut);,edit.add(cut);edit.add(copy); edit.add(paste); edit.
9、addSeparator(); edit.add(selectall); config = new JMenu(Config); config.setMnemonic(C); bc = new JMenuItem(Back Color); fc = new JMenuItem(Fore Color); dc = new JMenuItem(Default Color); config.add(fc); config.add(bc); config.addSeparator(); config.add(dc); help = new JMenu(Help); help.setMnemonic(H
10、); about = new JMenuItem(About); help.add(about); mnb = new JMenuBar(); mnb.add(file);mnb.add(edit); mnb.add(config);mnb.add(help); public static void main(String args) new NewEditor(); ,三、 为组件定制弹出式菜单,问题的提出,为“Java Editor”程序的文本编辑区域定制如图所示的的弹出式菜单。 菜单中有五个菜单项组成,分别指示了不同的字体风格,可通过菜单项的选择实现文本区域中文本字体和字号的改变。,用J
11、PopupMenu类建立弹出式菜单,建立弹出式菜单 预先定义一个继承JPopupMenu类的子类,弹出式菜单施加给的对象应由构造方法中的参数接收。本例应是负责文本编辑的多行文本框。 JPopupMenu类的add方法允许向菜单中加入菜单项。弹出式菜单项的激活事件是ActionEvent,可依照多按钮的事件处理方法进行事件处理。,字体风格弹出式菜单的实现: import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.BevelBorder; class FontPopup
12、extends JPopupMenu implements ActionListener String item; Font font; JMenuItem mt; JTextArea t; FontPopup(JTextArea t) this.t = t; this.setBorder(new BevelBorder(BevelBorder.RAISED); /设置立体边框 item = new String标准仿宋,粗放行楷,规矩新魏,精致宋体,灵感隶书; font = new Font new Font(仿宋,0,18), new Font(华文行楷,0,30), new Font(华
13、文新魏,0,22), new Font(宋体,0,14), new Font(隶书,0,20) ; for(int i=0; iitem.length; i+) mt = new JMenuItem(itemi); mt.setFont(new Font(仿宋,0,14); this.add(mt); mt.addActionListener(this); ,public void actionPerformed(ActionEvent e) String s = e.getActionCommand(); int i; for( i = 0; iitem.length; i +) if(s.
14、equals(itemi)break; t.setFont(fonti); ,用JPopupMenu类建立弹出式菜单,为多行文本框定制弹出式菜单 让以上的弹出式菜单对文本框真实可用,就需要对文本框设置事件侦听。可通过MouseEvent的getButton()方法判断用户按下了哪个鼠标键: MouseEvent.BUTTON1左键 MouseEvent.BUTTON2中间键 MouseEvent.BUTTON3右键,多行文本框带弹出式菜单的实现: import java.awt.event.*; import javax.swing.*; class JTextAreaWithMenu ext
15、ends JTextArea implements MouseListener FontPopup fp ; JTextAreaWithMenu(int r,int c) super(r,c); fp = new FontPopup(this); this.addMouseListener(this); this.add(fp); public void mousePressed(MouseEvent e) if(e.getButton()=e.BUTTON3) fp.show(this,e.getX(),e.getY(); public void mouseClicked(MouseEven
16、t e) public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mouseReleased(MouseEvent e) ,四、 给GUI应用程序添加工具栏,问题提出,继续对“Java Editor”项目进行更新,再为界面添加如图所示的工具栏。 工具栏上流式顺序排放了七个工具按钮,作用分别是:新建文件、打开文件、保存文件、复制、剪切、粘贴、帮助。,工具栏界面设计,步骤 创建工具栏对象 将组件加入到工具栏 将工具栏加入到应用程序窗口,工具栏界面设计(续),创建工具栏对象 工具
17、栏用JToolBar类及其子类创建,它是一个容器组件,在工具栏组件中可以容放其他组件。 JToolBar的构造方法: public JToolBar():默认方向为水平( HORIZONTAL)。 public JToolBar(int orientation):指定方向,参数可选 HORIZONTAL 或 VERTICAL,后者为竖式工具栏。 public JToolBar(String name):指定标题,标题浮动时可见。默认的方向为 HORIZONTAL。,工具栏界面设计(续),将组件加入到工具栏 工具栏设置布局:setLayout方法,默认FlowLayout流式排放。 工具栏添加组
18、件:add方法向。也可通过“addSeparator()”方法在工具栏中加入分隔,以对工具按钮按功能分组。 将工具栏加入到应用程序窗口 JFrame类的add方法,可将工具栏加入进应用程序窗口,同时确定停放位置。 如: this.add(toolBar,North); /加入工具栏并停靠在上边,import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; class EditorToolBar extends JToolBar EditorToolBar(JTextArea t) super(Toolbar for Java Editor); String imgFile = new.jpg, open.jpg,save.jpg, copy.jpg,cut.jpg,paste.jpg,help.jpg; ImageIcon toolI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中级会计职称之中级会计经济法全真模拟考试试卷B卷含答案
- 20课景阳冈教学课件
- 始平公教学课件
- 第五节定量分析中的常用器皿目的能识别常用的玻璃仪器非金属器
- 【承德】2025年河北承德市平泉市教育和卫健系统所属事业单位招聘工作人员8人笔试历年典型考题及考点剖析附带答案详解
- Brand KPIs for milk:Verde Campo in Brazil-英文培训课件2025
- 小学生篮球教案课件
- 口腔溃疡介绍
- 小学生科普班会课件
- 2025年医养结合养老机构老年人身心健康促进服务区域产业链研究报告
- 2025至2030临床决策支持系统行业项目调研及市场前景预测评估报告
- 黑启动操作培训课件
- 肿瘤的健康科普
- 2025至2030中国清洁机器人市场经营效益与投融资发展状况报告
- 百世快运质量管理制度
- 烟台万华并购匈牙利博苏化学公司研究报告
- 【宜宾】四川省宜宾市2024年下半年引进人才126人笔试附带答案详解
- 中医疼痛课件
- 护理压疮试题及答案
- 2025年军队文职统一考试《专业科目》数学1试卷真题答案解析
- 法院辅警笔试题及答案
评论
0/150
提交评论