我想使用CardLayout在JDialog上创建一个“向导”,由用户按下菜单栏中的“新建”按钮来触发。在Netbeans中,我创建了一个JDialog,通过它我可以获得一系列CardLayout格式的jPanels。在我的“新建”菜单项中,我编写了以下代码来启动jDialog,如下所示:

 CardLayout cl = (CardLayout) jDialogNew.getLayout();
 cl.preferredLayoutSize(jDialogNew);
 cl.show(jDialogNew, "card1");


但是,编译器会出现以下错误,

线程“ AWT-EventQueue-0”中的异常java.lang.ClassCastException:
    无法将java.awt.BorderLayout强制转换为java.awt.CardLayout


如果有人可以帮助我完成有关“ Netbeans”的向导,我将永远感激不已

最佳答案

您的jDialogNew设置了BorderLayout作为其布局,而不是CardLayout,这意味着当您调用getLayout()尝试使其适合不能容纳BorderLayout的变量时,将引发异常。这些类是不同的,因此您不能从一个类转换到另一个类,从而导致ClassCastException。

一个可能的解决方案是为jDialogNew设置自己的布局。我前面没有代码,因此我无法检查自己,但尝试查找类似setLayout()的方法,然后传入您选择的新布局。

10-08 11:10