Re: [問題] JTable的排序與上色

看板java作者 (十年一夢)時間10年前 (2013/10/21 15:49), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串8/8 (看更多)
※ 引述《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
感謝您詳盡的解說,讓我受益良多 m(_ _)m
10/23 00:17, 1F
文章代碼(AID): #1IPDni8R (java)
討論串 (同標題文章)
文章代碼(AID): #1IPDni8R (java)