2013-03-21 146 views
0

尊敬的朋友:我有一个主应用程序,其中包含一个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,因为我基本上需要在这个窗口中做很多事情,比如表格,图像等等。再次感谢。

+0

在这里,我们再次...请看到这个问题:http://stackoverflow.com/questions/9554636/the-use-of-multiple-jframes-good-bad-practice – 2013-03-21 21:07:30

回答

3

您需要设置aWindow可见。

+0

老兄你的男人,我知道这是非常愚蠢的,非常感谢。 – 2013-03-21 20:13:17