Java 如何修复重新打开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

因此,我的程序可以选择关闭并重新打开JFrame,但当我这样做时,每次我重新打开JFrame时,iTen都会成倍增加。我在我的代码中搜索并打开我正在使用的JFrame:

  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