回到顶部
您的当前位置: 编程语言> JAVA> JAVA基础> 系列教程
Java进阶(九)菜单、工具栏和对话框
2014-04-08 09:19:01
标签: 网络整理 Java 进阶 菜单、工具栏和对话框

Java提供了创建图形用户界面的综合解决方案。

一:菜单
菜单能够简化选择操作,广泛应用于各种视窗应用程序。Java提供五个实现菜单的类:JMenuBar、JMenu、JMenuITem、JCheckBoxMenuITem和JRadioButtonMenuITem。
JMenuBar是用来存放菜单的顶层组件。菜单由供用户选择的菜单项组成。菜单项是JMenuITem、JCheckBoxMenuITem和JRadioButtonMenuITem的实例。菜单项可以与图标、热键、快捷键等创建关联。菜单项可以使用分隔符来分隔。
1)创建菜单
① 创建一个菜单栏,并用setJMenuBar方法建立它与框架或applet的关联。
例如,
JFrame frame = new JFrame();
frame.setSize(300,200);
frame.setVisible(true);
JMenuBar jmb = new JMenuBar();
frame.setJMenuBar(jmb); // Attach a menu bar to a frame
② 创建菜单并建立它们与菜单栏的关联。
例如,
public JM(String label)
下面是创建菜单的例子:
JMenu fileMenu = new JMenu("File");
JMenu helpMenu = new JMenu("Help");
这就是创建了两个标签为File和Help的菜单。
③ 创建菜单项并把它们添加到菜单中。
fileMenu.add(new JMenuITem("New"));
fileMenu.add(new JMenuITem("Open"));
fileMenu.addSeparator();
fileMenu.add(new JMenuITem("Print"));
fileMenu.addSeparator();
fileMenu.add(new JMenuITem("Exit"));
上述代码将菜单项New、Open、分隔线、Print、又一条分隔线和Exit依次添加到File菜单中。
2)图标、热键和快捷键
菜单组件JMenu、JMenuITem、JCheckBoxMenuITem和JRadioButtonMenuITem具有图标属性icon和热键属性mnemonic。例如,
JMenuITem jmiNew,jmiOpen;
fileMenu.add(jmiNew = new JMenuITem("New"));
fileMenu.add(jmiOpen = new JMenuITem("Open"));
jmiNew.setIcon(new ImageIcon("image/new.gif"));
jmiOpen.setIcon(new ImageIcon("image/open.gif"));
helpMenu.setMnemonic('H');
fileMenu.setMnemonic('F');
jmiNew.setMnemonic('N');
jmiOpen.setMnemonic('O');
二:弹出式菜单

弹出式菜单,也称为上下文菜单或快捷菜单,很像普通菜单,但是它没有菜单栏,可以浮现在屏幕的任何地方。创建一个弹出式菜单与创建一个普通菜单类似。例如,

JPopupMenu jPopupMenu = JPopupMenu();
jPopupMenu.add(new JMenuITem("New"));
jPopupMenu.add(new JMenuITem("Open"));

普通菜单总是通过setJMenuBar方法附加到一个菜单栏上。而弹出式菜单总是和一个父组件相关联,并使用JPopupMenu类中的show方法显示。要指定父组件和弹出式菜单的位置,可使用下面语句:

jPopupMenu.show(component,x,y);

习惯上,指向GUI组件并且单击某个鼠标键时显示弹出式菜单,这个鼠标键称为弹出触发器,它是依赖于系统的。

下面是程序的主要步骤:

① 使用JPopupMenu创建弹出式菜单。

② 把菜单项添加到弹出式菜单中。

③ 创建滚动窗格并将文本域添加到滚动窗格中。

④ 实现actionPerformed处理器,处理来自菜单项的事件。

⑤ 实现mousePressed和mouseReleased方法,处理触发弹出触发器的事件。

在用户界面中,工具栏通常用于存放菜单中出现的命令。

三:使用Action接口处理动作事件

通常,菜单和工具栏都包含一些通用行为。例如,通过选择File、Save菜单或者单击工具栏上的保存按钮,可以保存一个文件。Swing提供了Action接口,利用它可以创建处理行为的Action对象。

Action接口是ActionListener的一个子接口。

AbstractAction是Action接口的默认实现。

AbstractAction是一个抽象类,因此,不能用它的构造方法创建实例。但是,可以创建它的一个具体子类并实现actionPerformed方法。为了方便起见,这个子类可以定义为匿名内部类。例如,下面的代码创建一个能够终止程序的Action对象:

Action exitAction = new AbstractAction("Exit") {
  public void actionPerformed(ActionEvent e) {
    System.exit(0);
  }
};

下面把一个Action对象添加到菜单和工具栏的例子:
jMenu.add(exitAction);
jToolBar.add(exitAction);
例如,可以从Action对象创建JButton。
JButton jbt = new JButton(exitAction);
四:JOptionPane对话框

对话框通常用作临时窗口。用来接收用户的附加信息或者提供某事件发生的通知。Java提供用于创建标准对话框的JOptionPane类。

可以使用JOptionPane类创建以下四种标准对话框:

① 消息对话框:显示一条消息并等待用户单击OK按钮。

② 确认对话框:显示一个问题,要求确认,例如,OK或Cancel。

③ 输入对话框:显示问题,获取用户从文本域、组合框或列表框的输入。

④ 选项对话框:显示问题,从一组选项中获取用户的回应。

例如,可以使用下列方法创建一个消息对话框:

JOptionPane.showMessageDialog(null, "SSN not found",
  "For Your Information", JOptionPane.INFORMATION_MESSAGE);