我在JTable中有表格。 2個字符串和一個Integer。我試圖渲染(僅整數列)單元格值是否爲0 <有我的代碼:渲染具有值的單元格
public Component getTableCellRendererComponent(JTable aTable, Object aNumberValue,
boolean aIsSelected, boolean aHasFocus, int aRow, int aColumn) {
if (aNumberValue == null) {
return this;
}
Component renderer = super.getTableCellRendererComponent(
aTable, aNumberValue, aIsSelected, aHasFocus, aRow, aColumn
);
Number value = (Number) aNumberValue;
if (value.doubleValue() < 0) {
// do something with renderer
} else {
// do something with renderer
}
return this;
}
的問題是:我認爲,該代碼嘗試檢查所有細胞與字符串列,因爲我有錯誤:該行中的java.lang.String cannot be cast to java.lang.Number
:Number value = (Number) aNumberValue;
。你能告訴我如何限制檢查只有一列(ID = 1)?
編輯編輯編輯
好吧,我發現如何限制我的渲染。現在我有代碼:
class TableRendererExample extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
int i = (int) value;
System.out.println(value);
c.setForeground(Color.GREEN);
return c;
}
}
我的問題是...爲什麼當我嘗試打印值是工作,但是當我嘗試投對象(值)整數i有例外:java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
。當我打印時,只有值,但問題在於投射...
好的,但當它不是myIntegerColumn,如果renderer對象,我想改變呢? –
「問題是你必須爲整個表定義一個TableCellRenderer。」[不,你沒有。](http://docs.oracle.com/javase/8/docs/api/javax/swing /table/TableColumn.html#setCellRenderer-javax.swing.table.TableCellRenderer-) – VGR
好的,那麼你能告訴我應該使用什麼來修復它只有一列? –