8.5.1 JMenuBar 菜单
菜单的组织方式为:一个菜单条 (JMenuBar)中可以包含多个菜单(JMenu),一个菜单中可以包含多个菜单项(JMenuItem及其子类)。有一些支持菜单的组件,如JFrame、JDialog以及JApplet,都有一个setMenuBar(JMenuBar bar)方法,可以利用这个方法来设置菜单条。
菜单项是菜单系统中最基本的组件,用户与菜单的交互主要是菜单项的交互,因此事件处理也是针对菜单项的。当用户选择了某个菜单项,就会触发一个ActionEvent事件,可以编写相应的类实现ActionListener接口对该事件进行处理。
例8-8演示了如何创建一个完整的菜单系统,可以通过点击菜单项让菜单项做出反应。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class JMenuBarTest extends JFrame{
private JMenuBar bar = new JMenuBar();
private JMenu menuFile = new JMenu("文件");
private JMenuItem itemFile1 = new JMenuItem("新建");
private JMenuItem itemFile2 = new JMenuItem("打开");
private JMenuItem itemFile3 = new JMenuItem("保存");
private JMenuItem itemFile4 = new JMenuItem("退出");
private JMenu menuHelp = new JMenu("帮助");
private JMenuItem itemHelp1 = new JMenuItem("帮助主题");
private JMenuItem itemHelp2 = new JMenuItem("关于记事本");
private JTextArea ta = new JTextArea(10,30);
public JMenuBarTest(String title){
super(title);
//设置快捷键
itemFile1.setAccelerator(KeyStroke.getKeyStroke('N',KeyEvent.CTRL_MASK));
itemFile2.setAccelerator(KeyStroke.getKeyStroke('O',KeyEvent.CTRL_MASK));
itemFile3.setAccelerator(KeyStroke.getKeyStroke('S',KeyEvent.CTRL_MASK));
itemFile4.setAccelerator(KeyStroke.getKeyStroke('E',KeyEvent.CTRL_MASK));
//添加JMenuItem到JMenu
menuFile.add(itemFile1);
menuFile.add(itemFile2);
menuFile.add(itemFile3);
menuFile.addSeparator();//加分割线
menuFile.add(itemFile4);
menuHelp.add(itemHelp1);
menuHelp.addSeparator();//加分割线
menuHelp.add(itemHelp2);
//添加JMenu到JBar
this.setJMenuBar(bar);
bar.add(menuFile);
bar.add(menuHelp);
Container contentPane = this.getContentPane();
contentPane.add(ta);
pack();
this.setVisible(true);
//注册监听器
itemFile1.addActionListener(new MyActionListener());
itemFile2.addActionListener(new MyActionListener());
itemFile3.addActionListener(new MyActionListener());
itemFile4.addActionListener(new MyActionListener());
itemHelp1.addActionListener(new MyActionListener());
itemHelp2.addActionListener(new MyActionListener());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private class MyActionListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
ta.setText("您按下了菜单项:"+e.getActionCommand());
}
}
}
public class Test8_8 {
public static void main(String[] args) {
new JMenuBarTest("记事本");
}
}
正在阅读:
2017年计算机二级考试java章节辅导:JMenuBar菜单12-18
2017年云南省昆明市事业单位考试申论真题及答案(Word版)11-07
记一次劳动作文500字五一劳动节-庆祝五一劳动节的小学作文500字07-06
上课睡觉万能检讨书800字范文【三篇】03-30
小学生课间活动作文【五篇】03-30
TOPIK成绩查询网:48届韩国语能力考试查分时间06-18
2020湖北孝感孝南区农村义务教育学校教师招聘考试公告【160人】11-19
[孟浩然《采樵作》是如何以绘画技法入诗]孟浩然《采樵作》诗词简析03-30
2017年内蒙古呼和浩特市中考英语真题及答案(Word版)09-16
高考优秀作文素材:学会坚强03-06