【问题标题】:Removing JPanel from a JPanel从 JPanel 中删除 JPanel
【发布时间】:2012-08-03 01:57:31
【问题描述】:

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

我不想从状态中删除按钮,因为我希望能够返回菜单并再次看到我的按钮。如何删除按钮以及状态?

【问题讨论】:

    标签: java swing user-interface fsm


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您是否考虑过使用CardLayout

      CardLayout 对象是容器的布局管理器。它对待 容器中的每个组件作为一张卡片。只有一张卡可见 一次,容器就像一叠卡片。首先 添加到 CardLayout 对象的组件是可见组件 首先显示容器。

      【讨论】:

      • 我的GUI格式不是问题,我只是想去掉一部分。
      • @user1264811:你误解了阿米尔的建议。他正在谈论在您的 GUI 中交换“视图”。阅读 CardLayout 上的教程,看看这可以帮助您完成什么。 1+ 到阿米尔。
      • 我知道这如何有效;但是,我希望在我的州有更多的灵活性。我的播放状态需要在我的 HUD 状态下可见。
      • 我处于“嗯?”的状态。使用嵌套布局,GUI 可以具有始终可见的部分,而其他部分可以使用CardLayout 交换。如果这不能回答您的问题,请重新表述问题并提供至少 2 个状态的 GUI 草图或 ASCII 艺术。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-07
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      相关资源
      最近更新 更多