重新打开 JFrame 时如何修复选择中的错误 additem?

How to fix error additem in choice when reopening a JFrame?

所以我的程序执行关闭并重新打开 JFrame 的选项,但是当我这样做时,每次我重新打开此 JFrame 时,它​​都会成倍增加。我在我的代码中搜索并打开我正在使用的 JFrame:

  Menu men = new Menu();
        men.main(null);

所以 Menu 的 JFrame,再做一次主要的,然后是 运行 这一次是为了在 Choice 中添加 itens:

  entrada7.addItem("option 1");
  entrada7.addItem("option 2");
  entrada7.addItem("option 3");

为此,每次我重新打开时,都会创建越来越多的此类选项。我该如何解决? 正在发生的事情的打印: https://imgur.com/TeIg50V

首先,您可能不应该按照您现在的方式重新打开 JFrame。您应该使用 setVisible 方法。例如,如果您使用按钮关闭 JFrame,请按以下方式调用该方法:

jframe.setVisible(false);

其中 jframe 变量引用您的唯一 JFrame 实例。

如果您通过单击按钮或菜单项打开它,请测试 jframe 实例是否存在,如果不存在则创建它,否则将其可见性设置为 true。所以这看起来像:

if (jframe != null) {
   jframe.setVisible(true);
} else {
   // call your initial JFrame creation routine here
}

您还应该注意用户单击左上角(或右上角,具体取决于 OS)关闭按钮的情况。在那种情况下,您不希望 Jframe 被删除,而只是被隐藏。因此,您应该在 JFrame 创建时定义 JFrame 的 setDefaultCloseOperation 行为。在这种特殊情况下使用类似的东西:

jframe.setDefaultCloseOperation(HIDE_ON_CLOSE);

这会指示 Swing 在我们单击关闭按钮时隐藏 JFrame。

在任何情况下,如果您首先检查您的 JComboBox 中没有任何项目 (getItemCount() == 0) 或者如果您在插入新项目之前明确调用 removeAllItems() 方法,则可以避免项目重复.

第一个选项如下所示:

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");

在第一种情况下,项目只会添加一次。在第二种情况下,如果项目已经添加,它们将在再次添加之前被删除。第一种选择当然更好。