我有一个包含一堆状态的游戏的状态管理器。现在在我的一种状态(“菜单”)中,我在一个 JPanel 中有两个 JButton(JPanel 被添加到显示所有内容的主 JPanel)。当我单击 JButton“播放”时,我从堆栈中删除了菜单状态。然而,JButtons 留在屏幕上(即使当我 peek() 我看到菜单已从堆栈中删除)。
我不想从状态中删除按钮,因为我希望能够返回菜单并再次看到我的按钮。如何删除按钮以及状态?
我有一个包含一堆状态的游戏的状态管理器。现在在我的一种状态(“菜单”)中,我在一个 JPanel 中有两个 JButton(JPanel 被添加到显示所有内容的主 JPanel)。当我单击 JButton“播放”时,我从堆栈中删除了菜单状态。然而,JButtons 留在屏幕上(即使当我 peek() 我看到菜单已从堆栈中删除)。
我不想从状态中删除按钮,因为我希望能够返回菜单并再次看到我的按钮。如何删除按钮以及状态?
您是否考虑过使用CardLayout?
CardLayout 对象是容器的布局管理器。它将容器中的每个组件都视为一张卡片。一次只能看到一张卡片,并且容器充当一叠卡片。添加到 CardLayout 对象的第一个组件是容器首次显示时的可见组件。
假设每个状态对应一个JComponent
,您可以使用该.setVisible(false);
方法在状态被移除时隐藏项目。
在这种情况下,当您初始化主组件时,您需要确保所有组件都已添加 - 然后当您添加/删除状态时,您可以切换可见性。