Java:在运行时更改面板

时间:2014-04-29 16:27:56

标签: java swing jpanel layout-manager cardlayout

以下方法有我需要的最终结果。问题是,当调用方法时,起始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();
}

1 个答案:

答案 0 :(得分:3)

  

"在运行时更改面板"

正确的方法是使用允许您在视图之间切换的CardLayout。有关详细信息,请参阅How to Use CardLayout。请参阅一个简单示例here

但只是为了让您知道代码中的哪个地方出错,如果您在运行时删除并添加组件,则需要revalidate()。但在您的情况下,请使用CardLayout。在你学习之后,你会很开心: - )