防止java多次打开同一窗口JFrame



例如,我在点击时创建这个

//this creates autor object with default constructor properties defined in autor class
menuAutor.addMouseListener(new MouseAdapter(){
            public void mouseClicked(MouseEvent e)
            {
                autor Autor = new autor("Autor");
            }
        });

所以创建了一个名为Autor的对象,当我再次点击按钮时,它会再次弹出同一个Autor对象。。如果一个窗口已经打开,如何防止打开同一个窗口?

编辑:终于解决了!经过深思熟虑。。我制定了解决方案。。。autorOpen="no"的默认值我在开始上课时解密了,只是为了让你知道,因为它在下面的代码中不可见,解决方案本身:

public void mouseClicked(MouseEvent e)
            {
                if(autorOpen=="no") {
                autor Autor = new autor("Autor");
                autorOpen = "yes";
                Autor.addWindowListener(new WindowAdapter(){
                    public void windowClosing(WindowEvent e) 
                    {
                        autorOpen = "no";
                    }
                });
                }
                else 
                    JOptionPane.showMessageDialog(null, "Demo notice... you can't open that window again.. its opened already!","Error",JOptionPane.ERROR_MESSAGE);  
            }
        });

将变量全局存储一点,并在创建新变量之前检查它是否存在。

您也可以考虑将Autor实现为一个单例类(以确保只实例化一个)。

public class Autor {
private static Autor instance = null;
//Must be protected or private, get a reference to this class with getInstance().
protected Autor() {
}

/**
* Returns reference to this class - use in place of constructor
*/
public static Autor getInstance() {
if(instance == null) {
instance = new Autor();
}
return instance;
}
}

使用布尔标志来指示对话框是否打开。如果弹出对话框,请将其设置为true,关闭该对话框时,请将它设置为false。

如果每次单击都要创建带有"new"的内容,那么每次都会得到一个新窗口。一种解决方案是在任何点击发生之前创建autor,然后让事件将其从隐藏移动到可见。

最新更新