使用的教材是java核心技术卷1,我将跟着这本书的章节同时配合视频资源来进行学习基础java知识。
day079 Swing用户界面组件(五:菜单一)(菜单创建、菜单项中的图标、复选框和单选钮菜单项、弹出菜单、快捷键和加速器、启用和禁用菜单项)
Swing还提供了一些其他种类的用户界面元素,下拉式菜单就是GUI应用程序中很常见的一种。位于窗口顶部的菜单栏(menu bar)包括了下拉菜单的名字。点击一个名字就可以打开包含菜单项(menu items)和子菜单(submenus)的菜单。当用户点击菜单项时,所有的菜单都会被关闭并且将一条消息发送给程序。
1.菜单创建
创建菜单是一件非常容易的事情。首先要创建一个菜单栏:
JMenuBar menuBar = new JMenuBar();
菜单栏是一个可以添加到任何位置的组件。通常放置在框架的顶部。可以调用 setJMenuBar方法将菜单栏添加到框架上:
frame.setJMenuBar(menuBar);
需要为每个菜单建立一个菜单对象:
JMenue ditMenu=new JMenu("Edit");
然后将顶层菜单添加到菜单栏中:
menuBar.add(editMenu);
向菜单对象中添加菜单项、分隔符和子菜单:
JMenuItem pasteltem=new JMenuItem("Paste");
editMenu.add(pasteltem);
editMenu.addSeparator();
JMenu optionsMenu=...;//a submenu
editMenu.add(optionsMenu);
当用户选择菜单时,将触发一个动作事件。这里需要为每个菜单项安装一个动作监听器。
ActionListener listener =...;
pasteItem.addActionListener(listener);
可以使用JMenu.add(Striiigs)方法将菜单项插入到菜单的尾部,例如:
editMenu.add("Paste");
Add方法返回创建的子菜单项。可以采用下列方式获取它,并添加监听器:
JMenuItem pasteltem=editMenu.add("Paste");
pasteltem.addActionListener(listener);
在通常情况下,菜单项触发的命令也可以通过其他用户界面元素(如工具栏上的按钮)激活。之前已经看到了如何通过Action对象来指定命令。通常,采用扩展抽象类AbstractAction来定义一个实现Action接口的类。这里需要在AbstractAction对象的构造器中指定菜单项标签并且覆盖actionPerformed方法来获得菜单动作处理器。例如:
Action exitAction = new AbstractAction("Exit")//menu item text goes here
{
public void actionPerformed(ActionEvent event)
{
//action code goes here
System.exit(0);
}
};
然后将动作添加到菜单中:
JMenuItem exitltem = fileMenu.add(exitAction);
这个命令利用动作名将一个菜单项添加到菜单中。这个动作对象将作为它的监听器。上面这条语句是下面两条语句的快捷形式:
JMenuItem exitltem = new JMenuItem(exitAction);
fileMenu.add(exitltem);
2.菜单项中的图标
菜单项与按钮很相似。实际上,JMenuItem类扩展了AbstractButton类。与按钮一样,菜单可以包含文本标签、图标,也可以两者都包含。既可以利用JMenuItem(Striiig,Icon)或者JMenuItem(Icon)构造