顯示具有 NetBeans 標籤的文章。 顯示所有文章
顯示具有 NetBeans 標籤的文章。 顯示所有文章

2009年12月14日 星期一

NetBeans 攻略 - 組態設定

最近比較認真一點使用 NetBeans,所以就會碰到一些問題,必須要想辦法解決:

  • 功能表跟對話方塊內容會變亂碼

這個問題有幾個可能,一個是因為 JDK 5 與 JDK 6 對字型 Anti-Aliasing 處理的方式不同,另一個可能是找不到包含中文字的系統字型,所以解決方式也有幾種:

  1. 如果是用 JDK 6 的話,可以檢查一下有沒有啟用 Clear Type 功能?如果沒有的話,啟用 Clear Type 功能或許就解決了。JDK 6 的 Swing 預設會啟用 Anti-Aliasing 功能,所以 Windows XP 的 Clear Type 也要啟動配合才比較不會有問題。
  2. 如果是用 JDK 6 的話,也可以試看看在 %JAVA_HOME%\jre\lib\fonts 目錄裡面新增一個 fallback 子目錄,裡面放個有中文字的字型,比方說微軟正黑體。重新啟動 NetBeans 之後,說不定就解決了。不知道為什麼系統明明就有內含中文字的字型,但是 Swing 就是看不到。
  3. 如果是用 JDK 6,但是前兩種作法都行不通的話,那就改用舊一點的 JDK 6,或是用 JDK 5 試看看,說不定就解決了。JDK 5 預設好像不會啟動 Anti-Aliasing 功能,所以問題比較少,但是字型顯示的時候也會比較醜一點。JDK 6 有些版本的 Swing 問題比較多,比方說 Update 12 與 Update 17,避掉會比較好。
  4. 還沒想到。
  • 想要使用其他語系的介面

如果像我不太習慣中文介面,想要改用英文介面的話,可以在執行 NetBeans 的時候多加一個參數 --locale,後面跟個 Locale ID。比方說,netbeans.exe --locale en_US。注意是兩個減號。

  • 功能表跟標籤頁的字體太小

這個問題的解法通常都是在執行 NetBeans 的時候多加一個參數 --fontsize,後面跟個數字,預設值是 11。比方說:netbeans.exe --fontsize 15。注意是兩個減號。不過,設定了之後不見得會有用,因為有些 Swing 的 Look and Feel 沒有寫好,功能表跟其他一些控制項的字體大小都寫死了,這時候用這個參數就沒有用,必須要順便換個寫的比較好的 Look and Feel 才可以。

  • Output 視窗的字體太小

這個問題以前的解法通常都是用上面提到的 --fontsize,但是有一個缺點,就是除了 Output 視窗字體變大之外,其他地方的字體也都跟著變大。現在有一個比較好的作法,只要在 Output 視窗裡面按下滑鼠右鍵,就可以更改字體大小,還可以更換好看一點的字體:

image

如果要動態調整大小,最新的秘技是點一下 Output 視窗,然後按著 Ctrl 鍵不放,把滑鼠滾輪上下推動,就可以調整大小了!

  • 更換 Look and Feel

Swing 有趣的地方就是可以更改 Look and Feel。NetBeans 是用 Swing 寫的,所以當然可以換 Look and Feel,換法就是在執行的時候加個 --laf 參數,後面跟個 Look and Feel 的主類別。比方說:netbeans.exe --laf javax.swing.plaf.metal.MetalLookAndFeel。注意是兩個減號。如果像 Metal 與 Nimbus 這種 JDK 內建的 Look and Feel,也可以寫簡寫:netbeans.exe --laf Metal。如果是 3rd-Party 寫的 Look and Feel,記得要把相關 JAR 檔案放到 Class Path。

  • 使用 Unicode 編碼

雖然 NetBeans 專案的預設編碼是 UTF-8:

image

但是 NetBeans 的一些 Wizard 在自動產生 Java 類別的時候,還是會有一些怪怪不太正確的地方,因為在繁體中文的 Windows 底下,編碼其實還是 MS950:

image

這時候可以考慮使用英文語系加上指定 Unicode 編碼的方式,來解決這個問題,也就是在執行 NetBeans 的時候多加個參數 -J-Dfile.encoding=UTF-8,編碼就會變成 UTF-8:

image

-J 的意思指的是,後面的參數是要給 JVM 用的,不是給 NetBeans 用的。-Dkey=value 則是一般執行 Java 程式時控制 JVM 環境變數的方式。注意這邊都是一個減號,然後 –J-D 要連在一起。

  • 指定 NetBeans 使用的 JDK

如果系統找得到 JDK,NetBeans 就會自動使用找到的那一份。如果想要指定使用特定位置的 JDK,可以在執行 NetBeans 的時候加個 --jdkhome 參數,後面跟著 JDK 的路徑。比方說:netbeans.exe –jdkhome “../../jdk”。注意是兩個減號。

  • 指定 NetBeans 存放 Plugin、Update、與組態設定的目錄

NetBeans 預設會把一堆事後下載與更新的檔案,還有一些設定值,放在 Home Directory 裡面,這對我們製作一個 Portable NetBeans 會造成很大的問題。如果想要指定 NetBeans 存放這些檔案的位置,可以在執行 NetBeans 的時候加個 --userdir 參數,後面跟著存放的路徑。比方說:netbeans.exe –-userdir “../../config”。注意是兩個減號。這個目錄也不可以位於 NetBeans 目錄之內。

以上這些參數可以加在 netbeans.exe 後面,也可以固定寫在 NetBeans 的組態設定檔案裡頭,就是 NetBeans 目錄下的 etc/netbeans.config 檔案:

netbeans_default_userdir="../../config"
netbeans_jdkhome="../../jdk"
netbeans_default_options="原有內容 --locale en_US -J-Dfile.encoding=UTF-8"

2009年3月14日 星期六

JDK 6 Update 12 的問題

上課的時候,因為沒有包袱,我總是習慣用最新版本的軟體。不過,這次踢到鐵板了!

我這次原先想要使用 NetBeans 6.5 + GlassFlass V2.1 Final Build 來上課,因為 JDK 正好出了 JDK 6 Update 12,我就一起用上了。結果,我在 NetBeans 裡頭完全沒辦法定義新的 Server。選了 Tools、Servers 之後,可以看到底下這個畫面:

image

可是按下 Add Server... 按鈕,完全沒有反應。不, NetBeans 右下角有一顆一閃一閃的小紅球!

image

按下 Close 按鈕關掉 Servers 視窗,再點兩下小紅球,才知道出了 NullPointerException:

image

我本來以為,這或許是因為我習慣用 ZIP 版本的 NetBeans,會不會改用 Setup 程式安裝的版本,就不會有這個問題。試了之後發覺不是,Setup 版本雖然看得到內建的 GlassFish,但是一樣無法讓我自己新增 Server。

星期五的時候,在 JavaTWO009 的會場碰到 koji,我知道 koji 對 NetBeans 跟 GlassFish 都很有研究,就跟他討教了一下。koji 說他沒碰過這個問題,但是他建議我可以試看看換掉 JDK 6 Update 12,因為他說也有人在抱怨 JDK 6 Update 12 讓有些原先可以正常運作的 Swing 程式掛掉。

回家之後馬上試了一下,把 JDK 換成 JDK 6 Update 11 的版本,真的就 OK 了!Add Server Instance 的畫面就出現了!

image

這件事告訴我們:換 JDK 是真的有可能會讓程式掛掉的喔!

2008年9月29日 星期一

REM - ZK Plugin for NetBeans

ZK 官方雖然只推出 ZK Studio 這個 Eclipse Plugin,不過 SourceForge.net 上有一個免費的 NetBean Plugin,名叫 REM,目前最新是 1.5.0 版。

裝好了之後,REM 會在 Web Application 中新增 ZK 這個 Framework,並且可以新增 ZUL、ZS、ZHTML 等檔案類型,撰寫 ZUL 檔案的時候也可以提供 Content Assist 功能,網站上提供的畫面如下,我就不另外抓了:


不過,目前好像還沒有提供 zscript 內 Java 程式碼的 Content Assist 功能。

使用 NetBeans 開發 Web Services

上課的時候,常常需要撰寫 Web Services,我個人覺得 NetBeans 這方面做的比 Eclipse 要來的好。

前兩天有個學員問我一個問題:如果有現成的 WSDL 檔案,可不可以像以前一樣產生 Server 端的 Skeleton?因為客戶會把需求寫成 WSDL,再交給他們去開發出 Web Services。

答案當然是可以的。

在 NetBeans 的專案上按下滑鼠右鍵,選取 New,就會看到三個跟 Web Services 有關的選項:
  1. Web Service...:這個是要從 Java 類別產生出 Web Service,當然也順便產生 WSDL
  2. Web Service Client...:這個是從 WSDL 產生出 Web Service 的 Client 端
  3. Web Service from WSDL...:這個就是從 WSDL 產生出 Web Service 的 Server 端,也就是所謂的 Skeleton
所以,不管是哪一種,都不需要像以前一樣寫一堆命令列參數。其實,當 NetBeans 產生專案時,就會為每個專案產生一個相對應的 build.xml 檔案,裡面就已經定義好一個一個 Ant Task,包括 Build、Build and Clean、Run,也包括撰寫或呼叫 Web Service 的相關 Task 了!