如何在单击JMenuItem时打开新的JFrame窗口

时间:2013-03-21 19:59:39

标签: java swing

亲爱的朋友,我有一个包含Menu的主应用程序,并且在Menu的每一个中都有一个JMenuItem。我想点击其中一个JMenuItem时我应该可以打开一个{I}来执行特定任务。这个new JFrame应该在一个实现JFrame的不同类中,而不是在包含Main方法的同一个类中,我在互联网上看到的许多示例和http://stackoverflow.com中都没有提供解决方案在两个不同的类别。当我在同一个类或实现ActionListener的内部类中尝试相同的方法时,它可以工作但不像我说的2个不同的类。我需要它的原因是因为ActionListener中有很多JMenuItems,每个Menu处理了大量的过程。如果我要将所有内容放在一个文件中,那么它不再是面向对象编程,它将是一个非常长的文件。一个例子如下所示。然而,吼叫的例子对我不起作用。有人可以指出我做错了什么。提前谢谢。

实现main方法的主类。

JMenuItem

这是与上述类

分开的动作侦听器类
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,因为我基本上需要在这个窗口中做很多事情,如桌子,图像等等。再次感谢。

1 个答案:

答案 0 :(得分:3)

您需要设置aWindow可见。