无需单击即可更改JTable单元格颜色

时间:2015-01-28 09:30:51

标签: java swing jtable tablecellrenderer

简而言之,我有一个填充了十六进制数据的JTable。该表保留在屏幕上,同时进行一些后台处理。

后台处理检查一些8字节值,例如,如果成功处理前8个字节,我需要表中的前8个单元格将其背景颜色更改为绿色。这将继续下一个8,直到表的结尾。

但我无法弄清楚如何实现这一目标。

public class MyCellRenderer extends javax.swing.table.DefaultTableCellRenderer {

    @Override
    public java.awt.Component getTableCellRendererComponent(javax.swing.JTable table, java.lang.Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        java.awt.Component cellComponent = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        System.out.println("Cell render test");
        cellComponent.setBackground(java.awt.Color.GREEN);
        return cellComponent;
    }
}

这是我发现的一些允许渲染单元格的代码,但它似乎只适用于整个列,使用:

.getColumnModel().getColumn(10).setCellRenderer(customRenderer);

我想这里有两个不同的问题:

  1. 如何指定要应用自定义渲染的精确单元格范围,即第0行,第0-7列?
  2. 如何在用户不与表进行交互的情况下应用此方法。我能找到的许多自定义渲染内容是用户选择单元格时,但在这种情况下,没有手动选择单元格。我猜这可能是触发某种事件的一种情况。
  3. 如果有人可以提供任何建议或意见,我将非常感激。

1 个答案:

答案 0 :(得分:3)

该方法的最后一个参数是row和column。要获得所需的结果,渲染器必须考虑这些值。