【发布时间】:2018-01-16 05:28:43
【问题描述】:
我想开发一个非常基础的应用程序,代码如下,我有4个类,一个是主类,第二个是JMenuBar,第三个是Panel,第四个是Action听者。目前我的问题是如何为JMenuBar 类添加动作监听器实例,直到我可以做一些动作。
public class My_Action implements ActionListener {
public My_Action() {
}
@Override
public void actionPerformed(ActionEvent actionEvent) {
}
}
public class My_Menu extends JMenuBar {
private My_Action my_action = new My_Action();
JMenu file;
JMenu Edit;
JMenu help;
public My_Menu() {
file = new JMenu("File");
Edit = new JMenu("Edit");
help = new JMenu("help");
JMenuItem item1 = new JMenuItem("file");
JMenuItem item2 = new JMenuItem("New");
JMenuItem item3 = new JMenuItem("Setting");
JMenuItem item4 = new JMenuItem("Color");
JMenuItem item5 = new JMenuItem("Print");
JMenuItem item6 = new JMenuItem("Exit");
file.add(item1);
file.add(item2);
file.add(item3);
file.add(item4);
file.add(item5);
file.add(item6);
file.addSeparator();
this.add(file);
this.add(Edit);
this.add(help);
item1.addActionListener(my_action);
}
public void actionPerformed(ActionEvent actionEvent){
System.exit(0);
}
}
【问题讨论】:
-
这里到底有什么问题?您在编译/运行代码时是否遇到任何错误?
-
首先感谢您的快速响应,我没有错误只是我想实现从 My_Action 到 My_Menu 类的动作侦听器,我该怎么做?
-
这里的事情是,你采取了错误的方法。
JMenuBar可以有多个JMenu项目,每个JMenu可以有多个JMenuItem。ActionListener应该添加到JMenuItem而不是JMenuBar -
如果您只想为所有
JMenuItems 使用一个ActionListener,您可能需要为它们使用不同的ActionCommand。然后你在你的actionPerformed方法中你应该使用一个控制结构比如if-else或者switch-case来找出它们中的哪一个被点击了。 -
如果你能把我也加入进来,item1.addActionListener(my_action);不在 JMenu 中
标签: java swing actionlistener