📄 e927. using built-in cell renderers and editors in a jtable component.txt
字号:
There are built-in cell renderers and editors available for seven types: Boolean, Date, Double, Float, Icon, Number, and Object. By default every column uses the Object cell renderer and editor, regardless of the column data type. There are two typical ways to force a column to use a particular cell renderer and editor.
The first way is to have the table model's getColumnClass() method return the Class object for the column data type. Typically, this method is overridden to return the Class object of the first cell in that column. The Class object is then used to fetch the appropriate cell renderer and editor.
The second way is to find the TableColumn associated with the column data in the table model and explicitly set a cell renderer and editor. This method must be used if two columns have different cell renderers yet their data type is the same.
DefaultTableModel model = new DefaultTableModel() {
// This method returns the Class object of the first
// cell in specified column in the table model.
// Unless this method is overridden, all values are
// assumed to be the type Object.
public Class getColumnClass(int columnIndex) {
Object o = getValueAt(0, columnIndex);
if (o == null) {
return Object.class;
} else {
return o.getClass();
}
}
};
JTable table = new JTable(model);
// Add a column for each of the available renderers
model.addColumn("Boolean", new Object[]{Boolean.TRUE});
model.addColumn("Date", new Object[]{new Date()});
model.addColumn("Double", new Object[]{new Double(Math.PI)});
model.addColumn("Float", new Object[]{new Float(1.2)});
model.addColumn("Icon", new Object[]{new ImageIcon("icon.gif")});
model.addColumn("Number", new Object[]{new Integer(1)});
model.addColumn("Object", new Object[]{"object"});
// Explicitly set the Boolean cell renderer and editor on the
// TableColumn showing the first column in the table model
int mColIndex = 0;
findTableColumn(table, mColIndex).setCellRenderer(table.getDefaultRenderer(Boolean.class));
findTableColumn(table, mColIndex).setCellEditor(table.getDefaultEditor(Boolean.class));
// Returns the TableColumn associated with the specified column
// index in the model
public TableColumn findTableColumn(JTable table, int columnModelIndex) {
Enumeration enum = table.getColumnModel().getColumns();
for (; enum.hasMoreElements(); ) {
TableColumn col = (TableColumn)enum.nextElement();
if (col.getModelIndex() == columnModelIndex) {
return col;
}
}
return null;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -