gpt4 book ai didi

java - 在 setVisible 后创建 JComboBox 使 JButton 消失

转载 作者:行者123 更新时间:2023-11-29 03:40:52 26 4
gpt4 key购买 nike

在创建 JFrame 和添加一些组件时,我注意到如果我在设置 JFrame 可见和添加按钮之间创建 JComboBox 的实例,按钮会消失。

我首先创建一个 JFrame:

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);

然后我添加设置框架可见并添加一个 JButton:

frame.setVisible(true);
frame.add(new JButton("text"));

它按预期工作并显示一个大按钮:

JFrame with a button

但是,如果我在这些行之间创建一个 JComboBox 实例:

frame.setVisible(true);
new JComboBox();
frame.add(new JButton("text"));

现在按钮不见了..

JFrame without a button

我预计不会有任何变化,因为我只是创建了一个实例,并没有将它分配给任何东西。
为什么按钮消失了?

此外,如果将 new JComboBox(); 移动到 frame.setVisible(true); 上方,按钮将再次可见。

最佳答案

一旦显示 UI,就不应从除 EDT 之外的任何线程修改它。在第一种情况下,你有一些“运气”,它奏效了。在第二种情况下,可能创建 JComboBox 的时间足够长以防止您从非 EDT 的线程修改 UI。

您应该做的是在 EDT 上调用该代码:

SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
frame.add(new JButton("text"));
frame.setVisible(true);
}
})

关于java - 在 setVisible 后创建 JComboBox 使 JButton 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13230733/

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