我正在尝试使用NetBeans在Java中制作类似于幻灯片的应用程序。
我有一个JFrame(主窗口),它的内部有两个用于导航的按钮(后退和下一个),还有一个JPanel(mainPanel
),它充当应用程序“幻灯片”的持有人。我还使用自定义的JPanel(SlidePanel
)对象,然后将它们放置在mainPanel
内。其中的某些SlidePanel
对象中具有JPanels。
现在,我已经能够将这些SlidePanel
对象放置在mainPanel
内,并在它们之间导航(例如,如果我单击下一步按钮,则SlidePanel 1
将被SlidePanel 2
替换,或者如果我单击后退按钮SlidePanel 2
将替换为SlidePanel 1
。)通过使用removeAll()
,revalidate()
和repaint()
方法来完成此操作。
问题从这里开始。第三个SlidePanel
对象在其中包含一个JPanel。当您到达第三个SlidePanel
时会发生什么,它工作正常。但是从那里,如果单击“后退”按钮(返回到SlidePanel 2
),则SlidePanel 3
中的JPanel仍保留在屏幕上,并且SlidePanel 2
中的组件已调整为适合mainPanel
。
我应该怎么做才能解决这个问题?
编辑:非常感谢所有回答的人。我在一个虚拟项目上尝试了CardLayout,它工作正常。现在,我要做的就是将它添加到原始文件中。再次感谢。 :)
最佳答案
我建议为此使用CardLayout,而不是在JPanels
的Runtime
示例上添加和删除CardLayout
,并且您的想法可能是here