重新打开 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");
在第一种情况下,项目只会添加一次。在第二种情况下,如果项目已经添加,它们将在再次添加之前被删除。第一种选择当然更好。
所以我的程序执行关闭并重新打开 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");
在第一种情况下,项目只会添加一次。在第二种情况下,如果项目已经添加,它们将在再次添加之前被删除。第一种选择当然更好。