JTable - 呈现新的状态更改

时间:2016-10-28 05:12:34

标签: java jtable rendering

我试图在听众发出通知后改变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();

}

}

1 个答案:

答案 0 :(得分:0)

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

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