2012-08-06 78 views
0

我有一个包含一堆国家的游戏的状态管理器。现在在我的一个状态(“Menu”)中,我在JPanel中有两个JButton(将JPanel添加到显示所有内容的主JPanel中)。当我点击JButton“播放”时,我从堆栈中删除菜单状态。然而,JButton留在屏幕上(即使当我peek()我看到菜单已从堆栈中删除)。从JPanel删除JPanel

我不想从国家删除按钮,因为我想能够返回菜单并再次看到我的按钮。我怎样才能随着状态去除按钮?

回答

3

您是否考虑使用CardLayout

CardLayout对象是容器的布局管理器。它将 容器中的每个组件视为卡片。每次只有一张卡片在 处可见,并且该容器充当一摞卡片。添加到CardLayout对象的第一个 组件是 第一次显示容器时的可见组件。

+0

我的GUI格式不是问题,我只是想摆脱它的一部分。 – helsont 2012-08-06 04:16:32

+1

@ user1264811:您误解了Amir的建议。他正在谈论的是在GUI中交换“视图”。阅读CardLayout上的教程,看看这可以帮助你完成。 1+到Amir。 – 2012-08-06 04:26:18

+0

我明白这是如何有效的;但是,我想在我的州有更多的灵活性。我的Play状态需要在我的HUD状态下可见。 – helsont 2012-08-06 04:48:41

2

假设每个状态对应一个JComponent,您可以使用.setVisible(false);方法隐藏该项目时删除状态。

在这种情况下,当初始化主要组件时,您需要确保已添加所有组件 - 然后在添加/删除状态时,您只需切换可见性即可。