0

作为前言:我知道代码很粗糙——我上周刚学了 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 下可能导致此问题的原因是什么?

4

2 回答 2

6

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

于 2012-10-31T22:40:29.850 回答
6

JVM 6 仅允许 StringCardLayout.

JVM 7 也允许null-value 并将其替换为 emtpy String( "")

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

于 2012-10-31T22:55:27.143 回答