使用CardLayout切换到特定的JPanel

4

我开始使用 NetBeans 开发 Java 桌面应用程序。我有 7 个不同的屏幕,并且我使用 JPanel 来表示它们。一个 JPanel 来表示它们中的每一个,还有一个包含所有 JPanel 的 JPanel(命名为 mainPanel),它在 JFrame 内部。mainPanel 使用 CardLayout 实现屏幕(JPanel)之间的切换。我使用 NetBeans UI 部件构建了所有这些界面,即拖放。

布局

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

我知道可以使用JPanel.next()Jpanel.previous()来切换屏幕。但是它们只能在相邻屏幕之间进行切换,也就是说,如果你需要切换到相邻的屏幕。还有一个方法JPanel.show()可以跳转到特定的屏幕,但是问题是它需要一个参数name,这个name是一个字符串,在使用JPanel.add()函数添加到主面板时与之相关联。我是通过拖放添加所有内容的,所以我不知道会关联什么字符串。 虽然看起来很原始,而且我已经在没有Cardlayout的情况下完成了它,但这次,Cardlayout是一个要求。
非常感谢您的帮助。
3个回答

6

这个示例使用了一个JComboBox来更改卡片。该示例扩展了JPanel以添加名称,但是Component提供了getName()setName()方法作为替代方案。还可以参考这个相关的答案

image


5
好的...我已经得到了答案。问题是,当你通过界面添加一些东西时,它的代码会自动生成并默认隐藏。因此,我需要查看自动生成代码以获取相关字符串。默认情况下,它是card1、card2、card3等等。
trashgod 的答案示例正是我想要的,但不是我想要的方式。它手动关联了自定义 Jpanel 中的字符串。但是这让我想到查看自动生成的代码。非常感谢您 :)
现在我需要做的是:
 mainPanel.show (gameHome, "Card3");

3
作为替代方案,可以使用ViewSwitcher,它更适合您在这里尝试做的事情。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接