明明都是具有RSS訂閱的網站,為何瀏覽器會有偵測不到的問題呢?其實差別在於網站原始碼<head>標籤內是否具有<link>標籤。
2010年9月2日 星期四
2010年8月25日 星期三
將 Java swing 的 JFrame 縮小至系統托盤上
由於本次專題內會使用到定期更新的功能,必須將系統常駐,但又不可能總是縮小在工作列上,所以這次使用 SystemTray、 TrayIcon ,以及各種觸發事件傾聽來達到縮小至系統托盤上的效果:
2010年8月19日 星期四
Java swing 圖形介面設計時的小提醒
目前專題使用的視窗布局管理有「GirdBagLayout 格群佈局管理員」與「null 不使用視窗布局管理」,這兩個布局管理在使用有許多不起眼的小設定,但這些設定卻足以改變整個布局的外觀:
(以下均為操作時發生的問題,實際上是否具有該項特性仍需再次測試)
(以下均為操作時發生的問題,實際上是否具有該項特性仍需再次測試)
2010年8月18日 星期三
phpMyAdmin 開啟關聯式資料庫
因為我們所學的資料庫系統,都會使用到關聯式資料庫,以方便利用關聯式運算來取得所需資料,但是 phpMyAdmin 預設是不會開啟關聯式資料庫的功能,於是需要使用者手動開啟功能。
以下使用的套件為 appserv-win32-2.5.10 ,其中內部的 phpMyAdmin 版本為 2.10.3 。
以下使用的套件為 appserv-win32-2.5.10 ,其中內部的 phpMyAdmin 版本為 2.10.3 。
2010年8月9日 星期一
自動抓取 Html 的網站編碼
我之前是設計使用者在輸入網址時,也必須輸入網站編碼,但除非從瀏覽器的工作列上選擇「檢視」-> 「編碼」來查看,不然一般使用者是不會在乎網站的編碼,反正能正常顯示就好。於是我必須要加入自動偵測的方式,代替使用者輸入網站編碼。
2010年8月5日 星期四
JComboBox 下拉式選單的注意事項
雖然 JComboBox 也可利用觸發事件來處理所選擇的選項,但實際上跟按鈕的觸發事件略有不同。例如單單選取某個選項,就會觸發兩次 itemStateChanged 的事件,原因在於 itemState 有兩種,各為 ItemEvent.DESELECTED (已選擇變成未被選擇),以及 ItemEvent.SELECTED (未被選擇變成已選擇)。故在 itemStateChanged 事件內再加入 e.getStateChange() 來判斷目前狀況,如下述程式碼:
2010年8月1日 星期日
另一種解析 Xpath 的套件
上次在 利用 Xpath( Xml Path Language XML查詢語言)來達到搜索功能 這篇文章中,是使用 xerces 這個額外下載的套件,實際上 JDK 也有內建 Xpath 的套件,就目前測試結果,兩者並無特別差異,但說不定在更後期的測試過程中,可能會有較明顯的差異。其程式碼如下:
2010年7月28日 星期三
DOM NodeList 動態更新之注意事項
若我們利用 NodeList 取得節點集合後,若新增或刪除該集合內的節點,則 NodeList 馬上會進行更新,這就是 NodeList 具有隨時保持自身更新的特性,我們用簡單的例子來說明這項特性:
2010年7月26日 星期一
在 Java 內使用 SQL 指令儲存 ' \ ' 字元的注意事項
由於 ' \ ' 在 Java 與 SQL 內均判定為跳脫字元,故若想利用 Java 連結 SQL 後,在資料庫內儲存跳脫字元 ' \ ',則除了在 Java 內使用 " \\ " 來表示 ' \ ' ,還要在輸入 SQL 指令時再使用 " \\ " ,故實際寫法為:
Java 物件陣列化
雖然這是很基本的問題,但當時卻卡了快半天才搞定,主因在於當該物件具有建構元時,要該如何讓該變數具有設定建構元且又有陣列化的方法,下列是簡單的陣列宣告:
int[] i = new int[2]; // 宣告 int 且陣列大小為2的變數 i
i[0]=1; // i[0]初值為1
i[2]=2; // i[1]初值為2
上面的程式碼應該對大家來說是小菜一疊,下列則是使用具有建構元的 class 產生物件並陣列化:
int[] i = new int[2]; // 宣告 int 且陣列大小為2的變數 i
i[0]=1; // i[0]初值為1
i[2]=2; // i[1]初值為2
上面的程式碼應該對大家來說是小菜一疊,下列則是使用具有建構元的 class 產生物件並陣列化:
2010年7月22日 星期四
放棄 Neko HtmlParser ,改用 Cobra HtmlParser 解析網頁
之前發佈的文章 使用 Neko HtmlParser 產生 Html DOM ,發現到 Neko HtmlParser 經常發出:
Exception in thread "main" org.w3c.dom.DOMException:
HIERARCHY_REQUEST_ERR:
An attempt was made to insert a node where it is not permitted.
Exception in thread "main" org.w3c.dom.DOMException:
HIERARCHY_REQUEST_ERR:
An attempt was made to insert a node where it is not permitted.
2010年7月19日 星期一
2010年7月18日 星期日
利用 Xpath( Xml Path Language XML查詢語言)來達到搜索功能
雖然我們學會了 Xml DOM 與 Html DOM ,但當 DOM 內容龐大時,要如何找出我們所需的節點內容呢?此時就能使用 Xpath( Xml Path Language XML查詢語言)來達到快速查詢的功能。
Xpath 本身就是一種 Xml 技術的查詢語言,在1999年11月16日成為 W3C 的建議規格,我們可利用 Xpath 查詢語言與運算式當作搜索條件,由於 Xpath 語言內容較為簡單,故在此就不再多作敘述,有興趣可查詢參考資料的內容。以下為 Java 使用 Xpath 的程式碼:
Xpath 本身就是一種 Xml 技術的查詢語言,在1999年11月16日成為 W3C 的建議規格,我們可利用 Xpath 查詢語言與運算式當作搜索條件,由於 Xpath 語言內容較為簡單,故在此就不再多作敘述,有興趣可查詢參考資料的內容。以下為 Java 使用 Xpath 的程式碼:
使用 Neko HtmlParser 產生 Html DOM
這次專題所選用的 HtmlParser 是採用有點歷史的 Neko HtmlParser + xerces ,其中 Neko 作者本身是 IBM 的 xerces 團隊的主力開發者,對 DOM 解析領域相當精深,再加上 Neko HtmlParser 具有不錯的 Html 標籤解析與清理效果。雖然我在最近一個禮拜尋找與測試其他的解析器,例如最多人使用的 HtmlParser 以及較為冷門的 Cobra HtmlParser ,但仔細比較之後,還是 Neko HtmlParser 較為好用。
2010年7月16日 星期五
Java 使用 import 載入套件時的注意事項
不同於 #include 將檔案內容載入進來,Java的 import 只是請編譯器幫我們在會使用到的 class 或 method 上加註套件名稱,例如我們要使用 Document 和 Node 的 class 則可以使用下列兩種寫法:
2010年7月7日 星期三
將 DOMSource 匯入 外部DTD
本次專題在 XML 的存取與修改上,是使用 TransformerFactory 的套件,而該套件的 Transformer 物件內含的 transform(Source source ,Result result) 轉換函數,在 source 為 DOMSource 時,是無法順利寫入 外部DTD 。因為光是使用 DOMSource內的 setSystemId() 來進行設定,是無法真正將 外部DTD置入,故需要利用 Transformer 物件內的 setOutputProperty(String name,String value) 來強制 DOMSource變更設定。
產生具有 外部DTD 的 Document 文件
一般建立 Document 文件無非是使用文件檔案載入 documentbuilder.parse(File); ,或是產生空白的 Document 文件 documentbuilder.newDocument(); ,然而 org.w3c.dom 套件 提供我們產生具有 外部DTD 的 Document 文件,就是使用 DOMImplementation 介面,其方式如下:
2010年7月5日 星期一
XML 載入 DOM 時, DTD 的存放位置與顯示方式
當 XML 載入 DOM 時,我們將所有資料放置在 Document 物件內,若要查看 XML 內的 DTD(Document Type Definition)資料內容,必須先行宣告 DocumentType 物件,並使用 Document 內的函數將 DTD 載入至 DocumentType內,再利用 DocumentType 內的 getInternalSubset() Method 加以顯示,如下列程式範例:
2010年7月2日 星期五
Java 視窗佈局管理 - GirdBagLayout 格群佈局管理員
原本設定視窗時,必須要利用 setBounds(int x,int y,int weight,int height) 來慢慢調整,尤其單位是使用 pixels ,在操作上十分麻煩,故改用 GirdBagLayout 來管理元件間的佈置。雖然 GirdBagLayout 是所有視窗佈局管理員內操作最為複雜的,但操作熟練以後,發現元件間的佈置更為方便了。
事件處理的重複註冊問題
起初我將各個功能視窗的生成,分別製作成 method 以方便管理,並自然而然在各 method 內幫元件進行事件處理的觸發註冊,然而彼此視窗間,時常會有返回先前視窗的動作,此時很容易會產生事件處理重複註冊的 Bug。
為求理解上的方便,故我們直接設定按下按鈕時,會先釋放舊有的視窗並重新產生原本的新視窗,做出類似視窗間重複返回的動作,如下列程式:
2010年6月29日 星期二
2010年6月18日 星期五
使用DTD的方式定義RSS標籤
雖然RSS的所有標籤即便不使用DTD定義,也可讓瀏覽器與RSS閱覽器正常運作,但在使用 DOM Parser 載入檔案時,會讀取到空白符號,若堅持不使用DTD文件認證,則在編輯XML時會十分不便。
2010年5月25日 星期二
Xml 之 DOM 技術:設定 DOM Parser 的注意事項
在設定 DOM Parser時,如果我們要忽略 xml 內的空白字元,大多數的書籍都會使用 setIgnoringElementContentWhitespace 這個 method 來處理。然而使用這個 method 有個最大前提, xml 必須要通過認證方可使用。
2010年4月13日 星期二
java例外處理的注意事項
以下為例外處理的基本程式區塊
try{
...
}catch(Exception1 e){
...
}catch(Exception2 e){
...
}finally{
...
}
例外處理有些規則必須要注意:
2010年4月5日 星期一
2010年3月21日 星期日
JAVA(JDK)路徑編譯設定
訂閱:
文章 (Atom)