CardLayout约束适用于Windows,但不适用于OS X.

时间:2012-10-31 22:37:29

标签: java swing

作为序言:我知道代码很粗糙 - 我上周刚拿起Java,所以我可以将这个东西交叉平台进行实验,这样即使我的学生也可以参加OS X机器研究。

所以我现在在大约10台Windows机器上测试它没有问题,但在OS X上,frame3显示没有任何面板(例如只是一个空白帧)。我现在在OS X机器上编译,我看到以下控制台输出:

Exception in thread "main" java.lang.IllegalArgumentException: cannot add to layout:     constraint must be a string
at java.awt.CardLayout.addLayoutComponent(CardLayout.java:190)
at java.awt.Container.addImpl(Container.java:1072)
at java.awt.Container.add(Container.java:363)
at Reflexology1.<init>(Reflexology1.java:150)
at Reflexology1.main(Reflexology1.java:51)

代码发布在http://pastebin.com/t3vqa0s6

是否有人知道在OS X下可能导致此问题的原因是什么?

2 个答案:

答案 0 :(得分:6)

我的第一个猜测是Windows和Mac机器正在使用不同版本的JDK。您可以通过为编译器运行javac -version和为运行时环境运行java -version从命令行进行检查。

答案 1 :(得分:6)

JVM 6仅允许String非空 CardLayout约束。

JVM 7还允许null - 值,并用emtpy String"")替换它

您可能在一个平台上使用一个版本而在另一个平台上使用另一个版本。