Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException:

来源:百度知道 编辑:UC知道 时间:2024/06/06 22:14:50
cannot add to layout: constraint must be a string
at java.awt.CardLayout.addLayoutComponent(CardLayout.java:190)
at java.awt.Container.addImpl(Container.java:1068)
at java.awt.Container.add(Container.java:352)
at javaapplication3.Music.readyToPlayer(Music.java:1149)
at javaapplication3.Music.playMedia(Music.java:1162)
at javaapplication3.Music.listMouseClicked(Music.java:766)
at javaapplication3.Music.access$900(Music.java:67)
at javaapplication3.Music$10.mouseClicked(Music.java:275)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
at java.awt.Component.processMouseEvent(Component.java:6103)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5865)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component

把readyToPlayer()方法的代码贴出来
------------------------------------
对于用CardLayout的Container,不可以直接用add(Component comp) 而要用add(Component comp, Object constraints), 而且这里的constraints必须是String.逻辑上,既然用到了CardLayout,总要指明是加到哪一个*Card*啊.

所以对于readToPlayer方法里既然用到了CardLayout,就不需要but_play,只要切换到but_pause就可以了.

//panel_play.remove(but_play);
panel_play.add(but_pause, "pause");
((CardLayout)panel_play.getLayout).show(panel_play, "pause");

当然之前but_play加入也要用
panel_play.add(but_play, "play");
否则一样出错。
另外尽量改掉上面的类型强制转换,相信不是难事。

java.lang.IllegalArgumentException说明
抛出的异常表明向方法传递了一个不合法或不正确的参数。
cannot add to layout: constraint must be a string
增加layout的时候必须是一个字符串
可以把程序贴出来看一下

约束必须是一个字符串

好吓人啊,呵呵,三楼不错