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

所以我的程序可以选择关闭并重新打开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

hexiansheng108 回答:重新打开JFrame时如何修复错误的additem?

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

jframe.setVisible(false);

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

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

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

您还应注意用户单击左上角的小关闭按钮(取决于操作系统,右上角的小按钮)的情况。在这种情况下,您不希望删除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");

在第一种情况下,项目将仅添加一次。在第二种情况下,如果已经添加了项目,则将其删除,然后再次添加。第一种选择当然更好。

本文链接:https://www.f2er.com/2846232.html

大家都在问