作者sbrhsieh (十年一梦)
看板java
标题Re: [问题] JTable的排序与上色
时间Mon Oct 21 15:48:57 2013
※ 引述《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
1F:推 prjryu:感谢您详尽的解说,让我受益良多 m(_ _)m 10/23 00:17