TableCellRenderer用法實踐(一)

2021-05-02 06:40:22 字數 1071 閱讀 1032

swing元件根據其所操作的資料型別分為兩種,一種是標量資料型別的元件,一類是復合資料型別的元件。標量資料型別的元件操作的是基本型別的資料,如字串、布林、數字等,此型別元件包括jtextfield、jcheckbox、jlabel、jbutton等。復合資料型別的元件操作的是諸如向量、矩陣和非線形等型別的資料。向量資料型別的元件有jcombobox、jlist,矩陣資料型別的元件有jtable,非線形資料型別的元件如 jtree。

為更形象地展現各種型別的資料,復合資料型別的元件往往採用標量資料型別元件來表現每種資料元素。比如jtable的某一列資料是字串型別,那麼該列的單元格往往用jlabel方式展現每個字串;如果一列資料是布林型別,那麼該列的單元格往往用jcheckbox方式展現每個布林值。

如何實現復合資料型別的元件的渲染呢?最直接的是在paint方法中乙個乙個地根據資料型別畫出每乙個元件,但這種方法很顯然**復用率很低,大量重複了相應標量型元件的**,**的維護和同步會非常困難,也不容易實現**切換。

為解決此問題,swing體系中提出了所謂渲染器(renderer)的概念,其核心思想是使用介面,封裝和復用已有標量型元件的渲染**,降低**重複率,提高元件的可擴充套件性。

jtable負責管理**的可視外觀,在繪製每個單元格時,呼叫getcellrenderer(int row,int col)獲得當前單元格的渲染器,即得到乙個component,然後將其繪製展現。tablecellrenderer是乙個介面,只有乙個方法:

componentgettablecellrenderercomponent(jtable table,

object value,

boolean isselected,

boolean hasfocus,

int row,

int column)

其中,row和column標識乙個單元格。也就是說,可以根據row和column的不同(單元格也就不同),獲得不同的填充元件,這樣只需要在該方法內進行相應的邏輯判斷。例如,可以實現同一列的不同行渲染效果不同,可以是單元格的背景色不同,或者是單元格內的字型不同諸如此類。下面的列子是,實現偶數行被劃一道行線的效果:

MySql explain用法及實踐

explain對我們優化sql語句是非常有幫助的。可以通過explain sql語句的方式分析當前sql語句。顯示這一行資料屬於哪張表,若在查詢中為select起了別名,則顯示別名。temp where id 11789 type 在表裡查到結果所用的方式。包括 效能有差 高 all index r...

rem px em實踐中用法

1.css中單位非常多,px rem 應該是用的最多的,em要慎用,最近還看到vw vh。在實踐過程中,使用rem,一定要記得結合html元素,設定font size html 如果你不寫,你會發現在谷歌和ie瀏覽器下,你的布局大部分都亂了。因為谷歌預設的是16px,而ie8是12。所以有時候需要你...

linux命令實踐 info的基本用法

info 是什麼?info是一種文件格式,也是閱讀此格式文件的閱讀器 我們常用它來檢視linux命令的info文件。它以主題的形式把幾個命令組織在一起,以便於我們閱讀 在主題內以node 節點 的形式把本主題的幾個命令串聯在一起。如下圖 頁面最上方的一行資訊分別是 本 node menu下方就是本主...