0

亲爱的朋友,我有一个包含 a 的主应用程序,Menu每个应用程序Menu都有一个JMenuItem. 我希望当我单击其中一个时JMenuItem我应该能够打开一个new JFrame将执行特定任务的。这JFrame应该在一个不同的实现类中ActionListener,而不是在包含 Main Method 的同一个类中,我在互联网和http://stackoverflow.com中看到的许多示例没有在两个不同的类中提供解决方案。当我在同一个类中尝试相同的方法或作为实现它的内部类时,ActionListener它可以工作,但不像我说的 2 个不同的类。我需要它的原因是因为其中 JMenuItemsMenu很多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,因为我基本上需要在这个窗口中做很多事情,比如表格、图像等等。再次感谢。

4

1 回答 1

3

您需要设置aWindow可见。

于 2013-03-21T20:04:14.253 回答