跳到主要內容

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

關於 Objective-C 的基本功

就在 iPhone 開創了智慧型手機軟體市場後, 市面上出現了很多關於 iPhone 平臺的開發教學書籍. 但是, 關於 iPhone 使用的程式語言 Objective-C 的書呢? 這種練基本功的書籍卻是少得可憐. 而龜毛如我, 只曉得怎麼使用 Cocoa framework, 卻不曉得基礎程式語言怎麼運作, 老是覺得渾身不自在. 就在打算入手 "Programming in Objective-C 2.0" 這本英文書的同時... 我發現 => 中文版出了!!!! 這對要使用 Objective-C 來寫程式的我, 無疑是一種福音. 無論是在價格上, 或使用的文字上. XDDD~