使用Cardlayout切换到特定的JPanel

时间:2012-09-10 11:32:28

标签: java swing netbeans jpanel cardlayout

我开始使用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将其添加到mainPanel时,它会使用参数String,这是您关联的JPanel.add()功能。我已经使用拖放添加了所有内容,因此我不知道String会被关联,如果有的话。 虽然它看起来非常原始,但我已经在没有Cardlayout的情况下完成了它,但这一次,Cardlayout是一个要求。

帮助将受到高度赞赏

3 个答案:

答案 0 :(得分:6)

example使用JComboBox更改卡片。该示例扩展了JPanel以添加名称,但ComponentgetName()setName()方法作为替代方法。另请参阅此相关answer

image

答案 1 :(得分:5)

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

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

现在我需要做的就像

 mainPanel.show (gameHome, "Card3");

答案 2 :(得分:3)

作为替代方案,请使用ViewSwitcher

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