如何获取jInternalPane的卡片布局?

时间:2014-06-20 16:35:31

标签: java swing user-interface cardlayout jinternalframe

我在jInternalPane内有一个jDesktopPanejDesktopPane位于具有jPanel布局的BorderLayout范围内。

在我的内部窗格中,我正在尝试以编程方式切换卡片。我有以下相关的代码片段:

public void switchCards() {
    CardLayout cl = (CardLayout)(internalFrame1.getLayout());
    cl.show(internalFrame1, "card1"); //Where card1 is a jPanel
}

但是,在错误跟踪中,我可以看到以下内容:

javax.swing.plaf.basic.BasicInternalFrameUI$Handler cannot be cast to java.awt.CardLayout

有人可以指出我正确的方向来正确处理这个错误吗?我很想学会怎么做!

非常感谢提前。

1 个答案:

答案 0 :(得分:2)

您可以在JInternalFrame的内容窗格上使用CardLayout,而不是内部框架本身。

您只需设置内容窗格的布局:

Container contentPane = internalFrame.getContentPane();
contentPane.setLayout( new CardLayout() );

contentPane.add(panel1, "Card1");
contentPane.add(panel2, "Card2");

然后你的switchCards()方法将是:

Container contentPane = internalFrame.getContentPane();
CardLayout cl = (CardLayout)(contentPane.getLayout());
cl.show(contentPane, "card1"); //Where card1 is a jPanel