我正在尝试使用NetBeans在Java中创建一个类似幻灯片的应用程序。
我有一个JFrame (主窗口),里面有两个用于导航的按钮(后退和下一个)和一个JPanel (mainPanel),它是应用程序“幻灯片”的持有者。我还使用自定义JPanel (SlidePanel)对象,然后将这些对象放置在mainPanel中。其中一些SlidePanel对象的内部有JPanels。
现在,我已经能够将这些SlidePanel对象放置在mainPanel中并在其中导航(例如,如果单击next按钮,SlidePanel 1将被SlidePanel 2替换,如果单击back按钮,SlidePanel 2将被SlidePanel 1替换)。我是通过使用removeAll()、revalidate()和repaint()方法来做到这一点的。
问题从这里开始。第三个SlidePanel对象在其中包含一个JPanel。当您到达第三个SlidePanel时会发生什么,它运行得很好。但是从那里开始,如果单击back按钮(这会使您返回到SlidePanel 2),则来自SlidePanel 3的JPanel将保留在屏幕上,SlidePanel 2中的组件将进行调整以适应mainPanel。
我该怎么做才能解决这个问题?
编辑:非常感谢所有回答的人。我在一个虚拟项目上尝试了CardLayout,它运行得很好。现在,我要做的就是把它添加到原来的那个。再次感谢。:)
发布于 2011-12-06 14:28:03
我建议为此使用CardLayout,而不是在Runtime示例中添加和删除CardLayout,并与您的想法一起使用这里。
发布于 2011-12-06 14:28:11
我建议您使用不同的布局管理器(例如CardLayout);让布局管理器担心如何处理它的组件。
https://stackoverflow.com/questions/8401420
复制相似问题