你可以用一个标志位记下是否已经打开一个FRAME,是则屏蔽了这个按扭。
好的做法是将新建的FRAME做成SINGLETON,那样按多少次都是同一个FRAME了。

解决方案 »

  1.   

    Good. 我的做法是保存引用在HashMap中,当初次创建的时候保存,关闭时清除。每次点击会先去检查MAP,然后确定是重新生成还是显示原先的。
      

  2.   

    按钮事件中判断:
    if(frame == null)
    {
        Frame frame = new Frame("The frame");
    }
      

  3.   

    楼主,试试这段代码吧,应该可以的。
    import java.awt.Container;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JButton;
    import javax.swing.JFrame;
    public class NewFrame {
        private static JFrame newframe=new JFrame();
        public NewFrame()
        {
        
        JFrame f=new JFrame("窗口");
        JButton b=new JButton("按我产生新窗口!");
        Container contentPane=f.getContentPane();
        contentPane.add(b);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(400,300);
        f.show();
        b.addActionListener(new ActionListener()
          {
              public void actionPerformed(ActionEvent e)
              {
                  
                  createNewFrame();
              }
          });
        
        }
        public static JFrame createNewFrame()
        {
            
            newframe.setSize(800,600);
            newframe.setLocation(200,100);
            newframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            newframe.show();
            
            return newframe;
            
        }
        public static void main(String args[])
        {
            new NewFrame();
        }}