以下方法有我需要的最终结果。问题是,当调用方法时,起始pnlMain
保持可见,直到创建新的pnlMain
并替换原始。{1}}。
这种方法的目的是通过创建一个新的面板来更改面板,但这个过程需要一点时间,所以我试图在这段时间内显示“加载”面板。
public void changePanel() {
remove(pnlMain);
add(load);
repaint();
pnlMain = new HunterPanel(settings); // HunterPanel extends JPanel
remove(load);
add(pnlMain);
repaint();
pnlMain.requestFocus();
}
答案 0 :(得分:3)
"在运行时更改面板"
正确的方法是使用允许您在视图之间切换的CardLayout
。有关详细信息,请参阅How to Use CardLayout。请参阅一个简单示例here
但只是为了让您知道代码中的哪个地方出错,如果您在运行时删除并添加组件,则需要revalidate()
。但在您的情况下,请使用CardLayout
。在你学习之后,你会很开心: - )