2016-10-28 4 views

答えて

0

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のthis.repaint()の代わりにjtable.repaint()を呼び出す必要があります。これは、jtableを再レンダリングする必要があるためです。

秒ごとに、すべてのセルに対してgetTableCellRendererComponentが呼び出されます。ステータスをfalseに設定すると、1つのセルだけが新しい色で再レンダリングされます。

+0

'repaint()'を呼び出す必要はありません。モデルを更新すると、ビュー自体が更新されます。 – trashgod

関連する問題