相信很多人都看過日本人 Nobuo Tamemasa 所寫的 MultipleRowHeaderExample,不過該範例是在 1999 年所寫的,跟現在的 java 已經有所不相容,而且程式碼很雜亂,不是很正規。

所以我就改用 Jeppers 的 JGrid bean 來呈現 multiple row header。下面是 demo 檔,各位看官可以自己試用看看。

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

今天來記錄一下如何監控 JTable 的選擇變化。其實這個功能在寫資料庫應該會很用到,比如查看一個表單,然後自動在另一個 JTable 顯示出表單內的細項,這時就要監控第一個 JTable 選擇變化了。話說 JTable 裏包含三大 Model,有 TableModel 記錄所有資料,有 TableColumnModel 記錄表格標題的資料,最後就是 ListSelectionModel 記錄選擇的資料。而 Model 是做啥的,其實就是一堆資料的處理,包含取得,設定等,當然最重要的就是資料變化的通知;當 Model 資料產生變化時,會通知註冊在 Model 裏所有的 listener,而 listener 根據該變化做出所需的動作。

ListSelectionModel 相對應的監聽介面為 ListSelectionListener,加入監聽的函數為 addListSelectionListener。ListSelectionListener 介面只包含一個函數 valueChanged(ListSelectionEvent e),每次 ListSelectionModel 資料有變化時,就會呼叫 valueChanged;也就是當 JTable 選擇改變時,會執行 valueChanged 函數。

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

在 Java 中,要取得字串在某一種字型所呈現的寬度,需透過 FontMetrics 類別來計算。FontMetrics 為 abstract class,但是我卻找不到 implements 的子類別。不過,可以透過下列方式來取得 FontMetrics 實例。

  1. Graphics.getFontMetrics() 獲取當前字體的字體規格。
  2. Graphics.getFontMetrics(Font f) 獲取指定字體的字體規格。
  3. Component.getFontMetrics(Font font) 獲取指定字體的字體規格。
  4. Component.AccessibleAWTComponent.getFontMetrics(Font f) 獲取此物件的 FontMetrics。
  5. List.AccessibleAWTList.AccessibleAWTListChild.getFontMetrics(Font f) 獲取此物件的 FontMetrics。
  6. MenuComponent.AccessibleAWTMenuComponent.getFontMetrics(Font f) 獲取此物件的 FontMetrics。

因為在取得 FontMetrics 實例時,已經指定字型的字體,所以接下來的函數,用來直接取得字串的顯示寬度。

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

在 trace JTableHeader source code 時,怎麼都找不到有關處理 mouse event 的地方,看了半天也是不明所以。最後在 TableHeaderUI 裏才找到相關的 code,但是在 JTableHeader 找不到載入 TableHeaderUI 的地方。還好,看到了 netbaixc 所寫的"JAVA Painting-Swing实现纪要一",才明暸如何載入 TableHeaderUI。

  1. javax\swing\table\JTableHeader.java

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()

DateFormat, SimpleDateFormat

主要是利用 SimpleDateFormat 來設定要顯示的樣式,再利用 DateFormat 的 format 函數來顯示字串。

字母 日期或時間元素 範例
G Era 標誌符 AD
y 1996; 96
M 年中的月份 July; Jul; 07
w 年中的周數 27
W 月份中的周數 2
D 年中的天數 189
d 月份中的天數 10
F 月份中的星期 2
E 星期中的天數 Tuesday; Tue
a Am/pm 標記 PM
H 一天中的小時數(0-23) 0
k 一天中的小時數(1-24) 24
K am/pm 中的小時數(0-11) 0
h am/pm 中的小時數(1-12) 12
m 小時中的分鐘數 30
s 分鐘中的秒數 55
S 毫秒數 978
z 時區 Pacific Standard Time;

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()