删除JPanel中的JPanel ...在JPanel中

时间:2011-12-06 14:23:02

标签: java swing jpanel

我正在尝试使用NetBeans在Java中创建类似幻灯片的应用程序。

我有一个JFrame(主窗口),里面有两个用于导航的按钮(后退和下一个),还有一个JPanel(mainPanel),用作应用程序“幻灯片”的持有者。我也使用自定义JPanel(SlidePanel)对象,然后放在mainPanel内。其中一些SlidePanel对象中包含JPanel。

现在,我已经能够将这些SlidePanel对象放在mainPanel内并浏览它们(例如,如果我点击下一个按钮,SlidePanel 1将被替换按SlidePanel 2,或者如果我点击后退按钮,SlidePanel 2将替换为SlidePanel 1。)我使用removeAll()revalidate()完成了此操作。和repaint()方法。

问题从这里开始。第三个SlidePanel对象包含一个JPanel。当你到达第三个SlidePanel时会发生什么,它运行正常。但是,从那里,如果您点击后退按钮(将您带回SlidePanel 2),来自SlidePanel 3的JPanel仍保留在屏幕上,SlidePanel 2内的组件调整为适合{ {1}}。

我该怎么做才能解决这个问题?

编辑:非常感谢所有回答的人。我在一个虚拟项目上尝试过CardLayout,它工作正常。现在,我所要做的就是将其添加到原始版本中。再次感谢。 :)

2 个答案:

答案 0 :(得分:5)

我建议使用CardLayout,而不是在JPanels的{​​{1}}示例中添加和删除Runtime,并且您的想法可能是here }

答案 1 :(得分:5)

我建议你使用不同的布局管理器(例如CardLayout);让布局经理担心杂乱无章的组件。