防止java从同一窗口的多个开口-JFrame

时间:2012-02-23 14:33:18

标签: java jframe actionlistener

例如我点击

创建
//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);  
            }
        });

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

您还可以考虑将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;
}
}

答案 2 :(得分:0)

使用布尔标志指示对话框是否已启动。如果弹出对话框,则将其设置为true,并在关闭该对话框时将其设置为false。

答案 3 :(得分:0)

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