我正在尝试使用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,它工作正常。现在,我所要做的就是将其添加到原始版本中。再次感谢。 :)
答案 0 :(得分:5)
我建议使用CardLayout,而不是在JPanels
的{{1}}示例中添加和删除Runtime
,并且您的想法可能是here }
答案 1 :(得分:5)
我建议你使用不同的布局管理器(例如CardLayout
);让布局经理担心杂乱无章的组件。