例如我点击
创建//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);
}
});
答案 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,然后让事件将其从隐藏移动到可见。