亲爱的朋友,我有一个包含 a 的主应用程序,Menu
每个应用程序Menu
都有一个JMenuItem
. 我希望当我单击其中一个时JMenuItem
我应该能够打开一个new JFrame
将执行特定任务的。这JFrame
应该在一个不同的实现类中ActionListener
,而不是在包含 Main Method 的同一个类中,我在互联网和http://stackoverflow.com中看到的许多示例没有在两个不同的类中提供解决方案。当我在同一个类中尝试相同的方法或作为实现它的内部类时,ActionListener
它可以工作,但不像我说的 2 个不同的类。我需要它的原因是因为其中 JMenuItems
有Menu
很多JMenuItem
处理大量的过程。如果我要将所有内容都放在一个文件中,那么它不再是面向对象编程,而是一个非常长的文件。一个例子如下所示。然而,下面的例子对我不起作用。有人可以指出我做错了什么。预先感谢。
实现 main 方法的主类。
public class SwendaEye{
public static void main(String[]args){
FrameandComp frame = new FrameandComp();
JFrame win;
win = frame.mainFrame();
JMenuBar bar;
bar = new JMenuBar();
win.setJMenuBar(bar);
JMenu swenda = new JMenu("SWENDAEYE");// adding Swenda menu to the bar.
bar.add(swenda);
JMenuItem open = new JMenuItem("Open");
swenda.add(open);
JMenuItem exit = new JMenuItem("Exit");
swenda.add(exit);
JMenu tools = new JMenu("Tools");// adding Tools menu to the bar.
bar.add(tools);
JMenuItem convertIP = new JMenuItem("Convert IP Address");
tools.add(convertIP);
JMenuItem convertDomain = new JMenuItem("Convert Domain Name");
tools.add(convertDomain);
convertDomain.addActionListener(new Domain());
win.setVisible(true);
}
}
这是与上述类分开的动作监听器类
public class Domain implements ActionListener{
public void actionPerformed(ActionEvent e)
{
if("Convert Domain Name".equals(e.getActionCommand())){
JFrame awindow = new JFrame();
awindow.setSize(200,400);
awindow.getContentPane().setBackground(Color.DARK_GRAY);
awindow.setTitle("Convert");
awindow.setDefaultCloseOperation(1);
}
}
}
在此示例中,我仅演示了 Convert Domain Name JMenuItem
。在你回答之前请不要告诉我JOptionPane
,因为我基本上需要在这个窗口中做很多事情,比如表格、图像等等。再次感谢。