Re: [問題] JTable的排序與上色
※ 引述《prjryu (再努力一點)》之銘言:
: 根據您的推論
: 我程式的問題是由於程式只為Object type設定default cell renderer,所以
: 不是 Object type 的 column 就會使用 JTable 預設準備好的 renderer。
: 就我的理解,
: 在此程式的問題在於沒有為Double type設定default cell renderer,所以
: 不是Double type的column就不會使用JTable我自己預設準備好的 renderer。
這邊你可能有打錯字。
應該是『沒有為 Double type 設定 default cell renderer,所以 Double type
column 就使用 JTable 內定的 cell renderer』。(這裡的內定不同於在 JTable
透過 setDefaultRenderer 所指定的)
: 但DefaultTableCellRenderer中我只找到也只知道getTableCellRendererComponent
: (JTable table, Object value, boolean isSelected, boolean hasFocus, int row,
: int column)
: 這裡可以改寫cell的顏色設定,
: 請問若要在column為Double type的時候可以正確的使用我設定的default cell
: renderer,要如何去修改我的cell renderer(ColorTable) 呢?
不是去修改 ColorTable 這個 renderer implementation,而是讓 ColorTable 也
成為 Double type column 的 default cell renderer。
你當初實作 ColorTable 已經選擇讓它能夠為 Object 與 Double 兩種數據
的 cell 提供 rendering,那麼你可以把 ColorTable 登記為 Object 與 Double
的 default cell renderer。
TableCellRenderer aRenderer = new ColorTable();
jTable.setDefaultRenderer(Object.class, aRenderer);
jTable.setDefaultRenderer(Double.class, aRenderer);
順便一提,設定 default cell renderer(by type) 的用途是在當一個 column
沒有明確指定 cell renderer 時,可依照該 column 所持有數據的形態去選擇
一個適當的 cell renderer 來做 cell rendering。
換個方式說,table column 是可以明確指定使用何種 renderer:先從 JTable
取得所使用的 TableColumnModel(用來管理 column),從其上取得特定 column,
為 column 指定使用何種 cell renderer。
http://docs.oracle.com/javase/6/docs/api/javax/swing/JTable.html#getColumnModel()
http://docs.oracle.com/javase/6/docs/api/javax/swing/table/TableColumnModel.html#getColumn(int)
http://docs.oracle.com/javase/6/docs/api/javax/swing/table/TableColumn.html#setCellRenderer(javax.swing.table.TableCellRenderer)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.237.219
推
10/23 00:17, , 1F
10/23 00:17, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 8 之 8 篇):