在Sun的官方網站上對Editor和Renderer的解釋是如下:
Renderer:
Instead, a single cell renderer is generally used to draw all of the cells that contain the same type of data. You can think of the renderer as a configurable ink stamp that the table uses to stamp apPRopriately formatted data onto each cell. When the user starts to edit a cell's data, a cell editor takes over the cell, controlling the cell's editing behavior.
個人理解就是對于不同的數據顯示不同的格式,相當于在MVC中根據不同的Model選擇不同的View,Renderer就是給你這個選擇的權利。默認的幾種數據的顯示方式如下:
Boolean — rendered with a check box. Number — rendered by a right-aligned label. Double, Float — same as Number, but the object-to-text translation is performed by a NumberFormat
instance (using the default number format for the current locale). Date — rendered by a label, with the object-to-text translation performed by a DateFormat
instance (using a short style for the date and time). ImageIcon, Icon — rendered by a centered label. Object — rendered by a label that displays the object's string value.假如你有非凡的數據,想有非凡的顯示方式,可以自己設定Cell的Renderer如下:
TableCellRenderer weirdRenderer = new WeirdRenderer();
table = new JTable(...) {
public TableCellRenderer getCellRenderer(int row, int column) {
if ((row == 0) && (column == 0)) {
return weirdRenderer;
}
// else...
return super.getCellRenderer(row, column);
}
};
Editor是用于編輯數據,但是Renderer是用于顯示數據。
關于Editor,和Renderer遵守相同的法則
新聞熱點
疑難解答