gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:07:46 25 4
gpt4 key购买 nike

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

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

所以菜单的 JFrame 再次执行 main 并再次运行它以在 Choice 中添加 itens:

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

为此,每次我重新打开时,都会创建越来越多的此类选项。我该如何解决这个问题?正在发生的事情的打印: /image/slWzD.jpg

最佳答案

首先,您可能不应该按照您的方式重新打开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。因此,您应该在创建 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");

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

关于java - 重新打开 JFrame 时如何修复选择中的错误 additem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59516722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com