跳到主要內容

Mac OS X, Java 與 NetBeans

自從大學以來 NetBeans 就一直是我撰寫 Java 程式語言的開發工具.
在我轉換作業系統之後, 其實我一直沒有好好研究如何在 OS X 上運作 Java, 趁著今天 Apple 發佈了 Java 的更新, 來寫篇如何在 OS X 上設定 NetBeans.
這次的更新是把 Java SE 的版本由原先的 1.6.0_07 一口氣昇到了 1.6.0_13, 或許熟悉 Java 的人會覺得, 這在其它作業系統不是早就有了!? 但因 Mac OS X 上的 Java 環境是由 Apple 自行維護的, 所以這得看 Apple 對 Java 的掌握與開發進度. 事實上, 這個更新我期待了很久, 因為我一直很想試試在 1.6.0_10 這個重大改版後所新增的跨平臺 Look and Feel-Nimbus.

所謂 Look and Feel (之後簡稱 LAF) 可以想成是佈景主題這樣的東西, 但為什麼我覺得 Nimbus 很特別!? 除了 Nimbus 是個很漂亮的向量 LAF, 更重要的是一個可以跨平臺的 LAF, 可以讓程式開發人員設計出更完善的使用者界面.

這個是 OS X 預設的 LAF, 使用的是 OS X 特有的 GUI-Aqua. 的確是很漂亮, 但若使用這個界面設計的程式到了 Windows 或其它作業系統上運作時, 就不是這麼一回事了, 因為 Aqua 只有 Mac OS X 有.

這種 LAF 是在 1.6.0_10 釋出前, Java 內建的 LAF-Metal. 雖然這是個跨平臺的 LAF, 但講真的, 比起 Aqua 和 Nimbus 這並不是非常的好看.

最後, 這就是 Nimbus 了, 是不是比 Metal 好看多了? 但若和 Aqua 比, 那就交給各位自行感受~

說了這麼多, 都還沒講到重頭戲 NetBeans 要怎麼設定, 在 OS X 中安裝完 NetBeans 後, 接著按照下列步驟進行設定~
在 NetBeans 程式上點右鍵顯示套件內容

然後依照路徑 Contents -> Resources -> NetBeans -> etc 找出並開啟 netbeans.conf 這個檔案

先找出 JDK 路徑的設定, 並將 1.5 改為 1.6
netbeans_jdkhome=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home

接著如果想要把 NetBeans 的 LAF 換成 Nimbus 的話, 可以找出 NetBeans 的啟動設定並加入 --laf Numbus
netbeans_default_options="-J-client -J-Xverify:none -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=200m -J-Dapple.laf.useScreenMenuBar=true -J-Dsun.java2d.noddraw=true --laf Nimbus"

OK, 搞定了~ 接著可以開心的執行 NetBeans, 可以發現 LAF 已經改為了 Nimbus, 和文章開頭那張 Aqua 的 NetBeans 很明顯地不同.

而使用的 Java 環境也順利設定成了 1.6.0_13

最後, 我想看完這篇文章之後懂我在幹嘛的人可能不多 XD 畢竟大家不是寫程式的, 但哪天如果有人同樣在 OS X 下使用 NetBeans, 希望我這篇文章能有些幫助~^___^~

附帶一提, 經過測試, Draggable Applet 似乎沒有辦法在 OS X 的 JRE 運作. 換言之以 Java 為底層技術的 JavaFX, 目前一樣無法在 OS X 下使用 draggable 這個特性的. 對這個功能有興趣的朋友, 只能等看看 Apple 有沒有意願把這個功能實作出來了 (也許 Snow Leopard 會更新!? 天曉得 orz)

留言

匿名表示…
使用Nimbus時候,會多一個menubar,請問有可以使用Mac原本的嗎?
阿刃寫道…
只要不要在 NetBeans 的啟動設定中加入 --laf Nimbus, 就會是使用預設的 LAF
提醒一點, 如果進行 GUI 設計時建議使用 跨平臺的 LAF, 這樣程式如果在其它作業系統執行時, 才不會出現不可預期的版面設計錯誤
匿名表示…
謝謝回覆!
請問使用跨平臺的LAF時,在Mac上menubar不能使用原本的就好嗎?
因為我的感覺對於Mac user應該會習慣到原本的menubar去找
而不是像在windows上每個應用程式的menubar都是獨立的
那在NetBeans上可否使用Nimbus的LAF,而且也使用Mac原本的Menubar?
阿刃寫道…
menubar 也是屬於 LAF 的一部份, 所以沒辦法選擇 Nimbus 卻又讓 menubar 保持在 OS X 慣用的位置.
你的考慮是正確的, 要考慮使用者的行為, 如果你開發的軟體使用者的作業系統都是 Mac OS X, 那就沒有所謂的跨平臺的問題, 當然也沒必要使用跨平臺的 LAF.
但若使用者可能包括其它作業系統, 那我個人的意見是有必要考慮使用跨平臺的 LAF, 或者是針對不同平臺進行客製化, 簡單的方法是針對不同系統調整 GUI, 麻煩點的話就要在程式裡面進行判斷, 不同的系統使用不同的 LAF, 這就要考驗你使用 Layout 的功力了, 因為我也不敢保證你的版面不會因為不同 LAF 跑掉.
匿名表示…
Netbeans 6.7 RC3 for Mac makes it possible.
Perhaps you can try it, it is more beautiful than before, and it is not native(system) LAF that Netbeans takes.
阿刃寫道…
謝謝樓上的匿名者提供的資訊,
小弟知道 NetBeans 6.7 有新的 LAF, 因為 JavaFX 的關係暫時我沒採用的打算...
但我想另一位匿名的朋友, 我沒搞清楚他需要的是開發跨平臺的軟體, 或是想只是單純想使用不同 LAF...

總之, 謝謝您給的回應

這個網誌中的熱門文章

引數?! 參數??!! 什麼鬼啊!!

我想這個不僅是只有我會遇到的問題, 大概也是所有 Programming 的人都有的疑惑 (應該是吧?) 什麼引數?? 什麼參數?? 天啊... 到底是誰翻譯的呀!!!! 就字面上來看... 講句實在話, 我真的不了解, 大概是學藝不精所致. 也許有些人認為 => 管它那麼多!! 寫得出來就好了!! 不過龜毛如我, 我還是想搞清楚定義是什麼!

世界第一! 臺灣的驕傲! iPod 全球最貴 XD!!??

2009 年 9 月 10 日 凌晨 1 點鐘, Apple 於美國舉行了 Apple Special Event September 2009 . 先說點題外話, 這場演說對 Apple 迷而言, 是久違的一場, 也不知道還能有幾場像這場一樣, 由 Steve Jobs 親自站臺. 這場演說的主題, 除了 iTunes 9, iPhone (iPod touch) OS 更新為 3.1 外, 就是 iPod 產品線的更新. 在看完發表會之後, 我去研究了一下新 iPod 的全球售價, 這也是這篇文章的重點, 蘋果臺灣的定價創下了新的紀錄- 套用一下最近常聽到的 Slogan 世界第一, 臺灣的驕傲, iPod 全球最貴!!??

關於 Polymorphism! 是的, 就是多型!

這幾天真的是寫了好多關於程式基礎的東西, 今天心血來潮想寫個物件導向的特性 - Polymorphism. 是的, 你沒看錯, 就是多型. 多型, 這有什麼好寫的呀? 每本物件導向的書籍, 不管是程式語言或是方法論, 一定都會提到的基本特性. 去書局翻翻就有了, 甚至在網路上搜尋 “物件導向” “多型”, 就可以找到讀也讀不完的資料. 在這老調重彈, 似乎有點... 多餘? 會想把這個議題拿出來講, 關鍵就在於我發現 Objective-C 上的多型, 和我以前認識的不太一樣, 更加 Powerful.