Mac 下 Java 程式使用系統功能表列

在 Mac 下面開發 Java 應用程式時,如果是使用 Swing 作為 GUI 的開發 framework,應該都會發現 JMenuBar 出現的位置就如同在 Windows 或 X Window 下的視窗程式一樣:功能表出現在視窗的上方,而不是 Mac OS X 下常見最上方的 screen menubar,就像這個程式的樣子:

Mac 下 Java 程式

改變後...

使用系統功能表列的 java 程式

本來以為這是 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 可以設定,詳細的介紹可以看這份網頁

  • Jimmy

    windows 的方式比較好用
    若螢幕很大、很多視窗時,在 Mac 下,都要一直切換 Focus 才能看到 menu,不甚方便…