更改框架的内容

时间:2012-03-29 18:49:03

标签: java swing

我正在为Java应用程序制作GUI。我想要做的是有一个框架,并根据用户操作更改正在显示的面板。虽然如果我做这样的事情:

private void setFrameContent(Container content) {
        appFrame.setContentPane(content);
    }

一旦我尝试更改正在显示的JPanel,框架就会冻结。还尝试了一些变化。

  

我应该如何更改框架的内容?

一个选项是CardLayout,但这意味着我必须在应用启动时创建所有面板,而其中一些可能不会被使用。还有什么方法可以达到这个目的?

1 个答案:

答案 0 :(得分:2)

1)如果您将JComponent添加到已经可见的容器中,那么您需要调用revalidate()repaint(),在您的情况下

  • for Java7直接实现了revalidate()repaint()JFrame

  • 对于Jav6和更低版本,您需要revalidate()repaint() ContentPane

2)我认为CardLayout(仍然)可以更好地在Swing GUI中切换Views