JTable - 呈现新的状态变化

JTable - render a new status change

我正在尝试根据侦听器的通知更改 JTable 中的颜色,但我没有成功。

有人可以让我回到正轨吗?

class TableRenderer extends DefaultTableCellRenderer implements SensorListener {

public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer();
private boolean status;

public TableRenderer() {
    status = false;
}

@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    Component renderer = DEFAULT_RENDERER.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    Color foreground, background;
    foreground = Color.BLACK;
    background = Color.WHITE;

    if (status == true) {
        System.out.println(status);
        foreground = Color.WHITE;
        background = Color.RED;
        status = false;
    }

    renderer.setForeground(foreground);
    renderer.setBackground(background);
    return renderer;
}

@Override
public void updateOnSensor(int freq, String extremumType, double price, double support, double resistance, double lowestMin, double highestMax, double minimumTrailing, double maximumTrailing) {
    this.status = true;
    System.out.println("coucou");
    this.repaint();

}

}

我看到了一些问题。 首先,您应该在方法 updateOnSensor 中调用 jtable.repaint() 而不是 this.repaint(),因为它应该重新渲染 jtable。

其次,将为每个单元格调用 getTableCellRendererComponent,如果将状态设置回 false,则只有一个单元格将使用新颜色重新渲染。