我试图在听众发出通知后改变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();
}
}
答案 0 :(得分:0)
我看到一些问题。 首先,你应该在方法updateOnSensor中调用jtable.repaint()而不是this.repaint(),因为它应该重新渲染jtable。
第二,将为每个单元格调用getTableCellRendererComponent,如果将状态设置为false,则只有一个单元格将使用新颜色重新渲染。