2012-10-31 158 views
0

作爲序言:我知道代碼很粗糙 - 我上週剛剛選擇了Java,所以我可以讓這個東西跨平臺進行實驗,以至於即使我的​​學生將OS X機器可以參與研究。CardLayout約束適用於Windows,但不適用於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下這個問題?

+3

我會檢查Java的運行時版本。 – 2012-10-31 22:40:03

+1

爲什麼要將佈局設置爲空? – Bill

回答

6

JVM 6只允許非空StringCardLayout的約束條件。

您可能正在使用在一個平臺上一個版本,而在另一另一個

JVM 7還允許null - 值和由emtpy String"")替換它。

6

我的第一個猜測是Windows和Mac機器正在使用不同版本的JDK。您可以通過命令行運行javac -version來運行環境,運行環境運行java -version

相關問題