我正在尝试使用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,而不是在JPanelsRuntime示例上添加和删除CardLayout,并且您的想法可能是here

08-07 05:22