我刚刚与JMenus做了一些尝试。 现在我想对所选项目做出反应。但我不确定找到所选项目的最佳方法是什么。 如果我向每个MenuItem添加一个actionListener并从抛出的actionEvent中获取actionCommand,它会按预期工作。不幸的是,这意味着我需要在菜单中为每个项目添加一个addListenerMethod。 现在我想知道是否有更优雅的方式。我可以直接将监听器添加到菜单中并接收所选项吗?稍后我想在我的菜单中添加子菜单。 感谢帮助。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class Starter {
public static void main(String[] args) {
Starter starter = new Starter();
starter.work();
}
private void work()
{
Test test = new Test();
ActionListener al = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand());
}
};
test.addDateiListener(al);
test.addt1Listener(al);
test.addt2Listener(al);
test.setVisible(true);
}
}
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class Test extends JFrame {
private JPanel contentPane;
private JMenu datei;
private JMenuItem t1, t2;
public Test() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 815, 394);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
datei = new JMenu("Datei");
menuBar.add(datei);
t1 = new JMenuItem("t1");
datei.add(t1);
t2 = new JMenuItem("t2");
datei.add(t2);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
}
public void addDateiListener(ActionListener al)
{
datei.addActionListener(al);
}
public void addt1Listener(ActionListener al)
{
t1.addActionListener(al);
}
public void addt2Listener(ActionListener al)
{
t2.addActionListener(al);
}
}