在 Mac 下面開發 Java 應用程式時,如果是使用 Swing 作為 GUI 的開發 framework,應該都會發現 JMenuBar 出現的位置就如同在 Windows 或 X Window 下的視窗程式一樣:功能表出現在視窗的上方,而不是 Mac OS X 下常見最上方的 screen menubar,就像這個程式的樣子:
改變後…
本來以為這是 Java 的「堅持」(讓應用程式在各處都長得一樣),結果今天發現其實是有辦法讓 Java 程式使用系統的功能表列(screen menubar)的。
以圖中的 ZTerm 這個程式為例,雖然在 Mac 下可以直接點擊 ZTerm.jar 來執行,不過也可以到終端機下執行:
java -jar ZTerm.jar
重點來了,如果想要讓 ZTerm 的功能表能使用系統功能表列,那執行時的指令就要作些改變,如下所示:
java -Dapple.laf.useScreenMenuBar=true -jar ZTerm.jar
如此執行之後,看它執行的畫面就知道差別囉!
如果是在開發的階段,我就會在程式一開始判斷是不是在 Mac 下執行,然後設定這個 property,下面是我自己寫的程式碼
[code lang=”java”]
if (System.getProperty(“os.name”).indexOf(“Mac”) != -1) {
System.setProperty(“apple.laf.useScreenMenuBar”, “true”);
}
[/code]
其實在 Mac 下執行 Java 程式還有其它的 properties 可以設定,詳細的介紹可以看這份網頁。
windows 的方式比較好用
若螢幕很大、很多視窗時,在 Mac 下,都要一直切換 Focus 才能看到 menu,不甚方便…