【发布时间】:2017-03-24 13:24:15
【问题描述】:
在实例化菜单栏的同时,我创建了两个单独的类,以及处理事件的第二个类;因为我在菜单栏上有很多我想处理的选项。
我已经设置了菜单栏,它的结构已经全部设置好了,现在下一步是在用户单击菜单栏上的选项时处理事件。
这是我的主菜单栏类中两个项目的 sn-p:
JMenuItem addOrangeItem = new JMenuItem("Orange");
addOrangeItem.addActionListener(new MenuActionListener().orangeActionPerformed(e));
JMenuItem addAppleItem = new JMenuItem("Apple");
addAppleItem.addActionListener(new MenuActionListener().appleActionPerformed(e));
这是我的事件处理类:
public class MenuActionListener implements ActionListener {
public void orangeActionPerformed(ActionEvent e) {
}
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("I have chosen an orange!");
}
public void appleActionPerformed(ActionEvent e) {
}
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("I have chosen an apple!");
}
}
问题在于我的主菜单栏类中的这行代码:
addAppleItem.addActionListener(new MenuActionListener().appleActionPerformed(e)); 而我的 ActionEvent 的 e 下划线为红色,我不知道该怎么做才能让它工作。
我的代码的目标是选择 Apple/orange 项目,然后我的事件处理类将返回一些代码。
我的问题是如何编辑上面的代码行,以便我可以正确处理我的菜单栏项?
如果您需要更多信息,请告诉我,我会尽快处理。
非常感谢任何帮助,谢谢。
【问题讨论】:
-
该行应该是
addAppleItem.addActionListener(new MenuActionListener());- 基本上,您将 MenuActionListener 的一个实例作为 ActionListener 添加到对象 addAppleItem - 在您执行一个函数并尝试将该函数的返回值添加为 ActionListener 之前
标签: java class menu actionlistener menubar