我试图能够在 JTable 中为单独的单元格着色,但到目前为止我只能在整个列上应用 TableCellRenderer,这显然会出现故障。我有一个自定义的 JTable:
public class JColorTable extends JTable{
(...)
public void setCellColor(int col, int row, Color newColor) {
getColumnModel().getColumn(col).setCellRenderer(new ColorField(col, row, newColor, background));
repaint();
}
}
ColorField 看起来像这样:
class ColorField extends DefaultTableCellRenderer {
(...))
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
JLabel l = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (row == newRow && column == newCol) {
l.setBackground(Color.red);
} else {
l.setBackground(defaultColor);
}
return l;
}
}
当我在一列中有一个彩色单元格时,这就像一个魅力,但是当我尝试为该列中的另一个单元格着色时,前一个被删除(由于 ColorField 中的条件不适用于上一列)。
有没有办法只将 ColorField 应用于单个单元格,而不是整个列?如果是这样,怎么做?恐怕我没有找到合适的东西。