尊敬的朋友:我有一个主应用程序,其中包含一个Menu
,并且在此Menu
的每一个中都有一个JMenuItem
。我希望当我点击其中一个JMenuItem
时,我应该可以打开一个new JFrame
,它将执行特定的任务。这JFrame
应该在不同的类,实现ActionListener
,不在同一类包含主要方法很多例子,我已经看到在互联网和http://stackoverflow.com不给两个不同类的解决方案。当我在相同的班级中尝试相同的方法或者实施ActionListener
时,它可以工作,但不像我说的2个不同的班级。我需要这样的原因是因为Menu
中有很多JMenuItems
,并且每个JMenuItem
都处理大量的流程。如果我要将所有内容放在一个文件中,那么它不再是面向对象的编程,而是一个非常长的文件。一个例子如下所示。然而,下面的例子并不适合我。有人能指出我做错了什么。预先感谢。如何在单击JMenuItem时打开新的JFrame窗口
实现主要方法的主要类。
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);
}
}
}
单独在这个例子中,我只展示了转换域名JMenuItem
。 和你回答之前请不要告诉我JOptionPane
,因为我基本上需要在这个窗口中做很多事情,比如表格,图像等等。再次感谢。
在这里,我们再次...请看到这个问题:http://stackoverflow.com/questions/9554636/the-use-of-multiple-jframes-good-bad-practice – 2013-03-21 21:07:30