Java 如何修复重新打开JFrame时选择的错误附加项?
因此,我的程序可以选择关闭并重新打开JFrame,但当我这样做时,每次我重新打开JFrame时,iTen都会成倍增加。我在我的代码中搜索并打开我正在使用的JFrame:Java 如何修复重新打开JFrame时选择的错误附加项?,java,swing,jframe,choice,Java,Swing,Jframe,Choice,因此,我的程序可以选择关闭并重新打开JFrame,但当我这样做时,每次我重新打开JFrame时,iTen都会成倍增加。我在我的代码中搜索并打开我正在使用的JFrame: Menu men = new Menu(); men.main(null); 因此,在菜单的JFrame中,再次执行main并再次运行此命令,以便在选项中添加ITEN: entrada7.addItem("option 1"); entrada7.addItem("option 2"); ent
Menu men = new Menu();
men.main(null);
因此,在菜单的JFrame中,再次执行main并再次运行此命令,以便在选项中添加ITEN:
entrada7.addItem("option 1");
entrada7.addItem("option 2");
entrada7.addItem("option 3");
为此,每次我重新打开,都会创建越来越多的选项。我该如何解决这个问题??
正在发生的事情的打印:
首先,您可能不应该按现在的方式重新打开JFrame。您应该使用
setVisible
方法。例如,如果使用按钮关闭JFrame,请按以下方式调用该方法:
jframe.setVisible(false);
其中jframe变量引用您的唯一jframe实例
如果通过单击按钮或菜单项打开它,则测试jframe实例是否存在,如果不存在,则创建它,否则将其可见性设置为true。所以这看起来像:
if (jframe != null) {
jframe.setVisible(true);
} else {
// call your initial JFrame creation routine here
}
if (entrada7.getItemCount() == 0) {
entrada7.addItem("option 1");
entrada7.addItem("option 2");
entrada7.addItem("option 3");
}
您还应该注意用户单击小的左上角(或右上角,取决于操作系统)关闭按钮的情况。在这种情况下,您不希望删除Jframe,只希望隐藏Jframe。因此,您应该在创建JFrame时定义其setDefaultCloseOperation行为。在这种特殊情况下,请使用以下内容:
jframe.setDefaultCloseOperation(HIDE_ON_CLOSE);
这指示Swing在单击close按钮时隐藏JFrame
在任何情况下,如果您首先检查JComboBox中是否没有项目(getItemCount()==0
),或者在插入新项目之前明确调用removeAllItems()
方法,就可以避免重复项目
第一个选项看起来像:
if (jframe != null) {
jframe.setVisible(true);
} else {
// call your initial JFrame creation routine here
}
if (entrada7.getItemCount() == 0) {
entrada7.addItem("option 1");
entrada7.addItem("option 2");
entrada7.addItem("option 3");
}
第二种选择是:
entrada7.removeAllItems();
entrada7.addItem("option 1");
entrada7.addItem("option 2");
entrada7.addItem("option 3");
在第一种情况下,项目将只添加一次。在第二种情况下,如果项目已添加,则在再次添加之前将删除它们。第一种选择当然更好 当您检查这个JFrame是否为NULL时,我如何调用它?您必须在主类的某个地方声明一个实例变量,类似于
JFrame-JFrame代码>。在本例中,jframe变量引用jframe实例。如何命名变量完全取决于您。是的,但检查的是“其他”框架是否打开??我不知道如何在“this”mainSee上声明“other”jframe