2016-02-09 13 views
0

,但它显示一个错误。CardLayout错误:错误的父母为我用cardlayout我班的一个卡片布局

我的代码运行与此类似:

// panels instantiated 
CardLayout cl = new CardLayout(); 
panel1.setLayout(cl); 
panel2.setLayout(cl); 

panel1.add(new JLabel("0 0"), "0"); 
panel1.add(new JLabel("0 1"), "1"); 

panel2.add(new JLabel("1 0"), "0"); 
panel2.add(new JLabel("1 1"), "1"); 

add(panel1); 
add(panel2); 

cl.show(panel1, "0"); 
cl.show(panel2, "0"); // error at this line 

为什么不考虑是Panel2作为一个父容器(抛出:IllegalArgumentException)?

任何帮助,将不胜感激。 谢谢。

回答

3

CardLayout是不是可以容器之间共享的布局,你应该在CardLayout加起来也只有一个容器。如果您需要两个使用布局的容器,请分别给它自己的CardLayout对象。

+0

好的。感谢您的建议。但是,如果它打算用于每个对象的一个​​容器,为什么它要求在其中一个参数中使用父容器? – user2999870

+2

@ user2999870因为'CardLayout'实际上并没有维持它以更新容器应用,所以容器的引用,就需要把它 – MadProgrammer

+0

@ user2999870参考:他说什么。 –