swing表格JTalble添加資料(資料類型實作自定類型,如顔色,組合框等控件)還有實作控件的功能—添加事件
1.總結一下:
- 1. 樣式的話,通過表格的渲染器改變,而功能的改變(例如添加組合框控件,資料變成組合框選中的—表格編輯器實作)
- 2. 想要實作:選中顔色,代表顔色就改變為選中的顔色:添加事件
- 3. 對于組合框有點小問題:選中後會調用兩次方法,因為組合框有兩種狀态:選中狀态和取消狀态,是以事件中需要判斷組合框的狀态,然後再實作組合框的選中事件,就解決問題啦
2.效果:

3.實作細節:
3-1、
3-2、執行個體化一個表格:JTable, 執行個體的時候沒有傳入參數,想要後邊通過mode 來重新設定表格控件的表頭和資料。
(ps:為了有表頭的樣式,先把表格控件添加到滾動面闆裡,然後再添加到内容面闆。)
3-3. 定義二維數組Object[ ][ ]的資料 和 String[ ] 的表頭名稱,用來作為參數傳入後邊的mode表格模式。
3-4. 通過封裝一個方法來設定表格模式,方法裡,執行個體了DefaultTableMode預設的模式,并且把資料和表頭名稱作為參數傳入,然後通過表格的 .setModel(模式對象) 來設定表格模式。
樣子:
(不夠完美,是以我們選擇了UIManager管理器來設定控件的樣式)
3-5 、 先設定表格和表頭中的字型樣式:
通過UIManger.put(key, value); 把表格字型Table.font / TableHeader.font 作為參數key傳入, Font對象作為value傳入。
3-6. 看一下,如果表格格子太窄了,就設定一下表格的行高像素:
通過.setRowHeight(像素);
3-7.
(不完美,是以我們需要渲染器渲染顯示出顔色)
3-8、 因為要重寫的内容很多,是以外部類啦,外部類繼承DefaultTableCellRenderer,然後重寫setValue函數,判斷如果值value是Color類型則設定為背景顔色。
3-9、 然後擷取表格中我們想要的那一列,給它設定上我們的渲染器(通過.getColumn(“目标列”).setCellRenderer(渲染器對象) )。
3-10.
解決:
3-11、 渲染器隻能渲染,改變外觀。想要修改功能,通過.setCellEditor(單元格編輯器)。
3-12、想要實作選擇下拉清單框後選中顔色,能夠修改顔色---添加事件
3-13. 下拉清單框的話有點小問題:就是選完選項,方法會被調用兩次。
因為:
參考自:老九學堂java線上課程第17章swing《JTable 擴充》