【问题标题】:Switch to specific JPanel using Cardlayout使用 Cardlayout 切换到特定的 JPanel
【发布时间】:2012-09-10 11:32:27
【问题描述】:

我已经开始使用 netbeans 开发 Java 桌面应用程序。我有 7 个不同的屏幕,我使用 JPanel 来代表它们。一个 JPanel 代表它们中的每一个,一个包含所有它们(命名为 mainPanel),它位于 JFrame 内。 mainPanel 使用Cardlayout 在屏幕(JPanels)之间切换。我使用 netbeans ui 小部件(即拖放)构建了所有这些界面。

布局

JFrame
    mainPanel (Jpanel) CardLayout
        Child1 (JPanel)
        Child2 (JPanel)
        .
        .
        .
        .
        Childn (Jpanel)

我知道可以使用JPanel.next()Jpanel.previous 切换屏幕。但它们只能在连续屏幕之间进行切换时使用,即如果您必须切换到直接邻居。还有一种方法JPanel.show() 可以转到特定屏幕,但问题是它需要一个参数name,这是您在使用JPanel.add() 函数将其添加到mainPanel 时关联的String。我已经使用拖放添加了所有内容,所以我不知道 String 关联的是什么,如果有的话。 虽然它看起来很原始,而且我已经在没有Cardlayout 的情况下完成了它,但是这一次,Cardlayout 是一个要求。

非常感谢您的帮助

【问题讨论】:

    标签: java swing netbeans jpanel cardlayout


    【解决方案1】:

    这个example 使用JComboBox 来换卡。该示例扩展 JPanel 以添加名称,但 Component 具有 getName()setName() 方法作为替代方法。另请参阅此相关answer

    【讨论】:

      【解决方案2】:

      嗯...我得到了答案。 问题是,当你通过界面添加一些东西时,它的代码是自动生成的,默认情况下是隐藏的。因此,我不得不查看关联字符串的自动生成代码。默认是card1、card2、card3等等。

      trashgod 回答的示例正是我想要的,但不是我想要的方式。它已手动关联自定义 Jpanel 中的字符串。但这让我想到了研究自动生成的代码。所以,非常感谢你:)

      现在我需要做的是

       mainPanel.show (gameHome, "Card3");
      

      【讨论】:

        【解决方案3】:

        也可以使用ViewSwitcher

        它更适合您在这里尝试做的事情。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多