gpt4 book ai didi

java - 如何从 JFrame 中删除 JPanel?

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

最近我在这里问how to add a new JPanel to JFrame 。答案帮助我获得了工作代码。但不是我有一个相关的问题:“如何删除旧的 JPanel”。由于以下问题,我需要它。

当我想要时(超出时间限制或用户按下“提交”按钮),就会出现一个新的 JPanel。但几秒钟后,旧 JPanel 的某些元素与新 JPanel 的组件一起出现。我不明白为什么会发生这种情况。

我认为这是因为我必须使用其他线程来更新窗口。但第一个线程只添加旧面板一次(所以,它应该完成)。在第二个线程中,我有一个循环已损坏(因此,它也应该完成)。

这是我的代码:

private Thread controller = new Thread() {
public void run() {
// First we set the initial pane (for the selection of partner).
SwingUtilities.invokeLater(new Runnable() {
public void run() {
frame.getContentPane().add(generatePartnerSelectionPanel());
frame.invalidate();
frame.validate();
}
});
// Update the pane for the selection of the parnter.
for (int i=40; i>0; i=i-1) {
final int sec = i;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
timeLeftLabel.setText(sec + " seconds left.");
}
});
try {
Thread.sleep(1000);
} catch (InterruptedException e) { }

if (partnerSubmitted) {
break;
}
}
// For the given user the selection phase is finished (either the time is over or form was submitted).
SwingUtilities.invokeLater(new Runnable() {
public void run() {
frame.getContentPane().add(generateWaitForGamePanel());
frame.invalidate();
frame.validate();
}
});

}
};

最佳答案

无论您在可见 GUI 上添加还是删除组件,效果都是一样的:

panel.remove(...);
panel.add(...);
panel.revalidate();
panel.repaint();

关于java - 如何从 JFrame 中删除 JPanel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61502592/

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