// newbie FrageWarum läuft mein JTable CellRenderer die ganze Zeit?
Ich habe eine JTable mit einem fast grundlegenden CellRenderer (es färbt die Zeile unterschiedlich). Ich habe bemerkt, dass mein CellRenderer ständig für die Zeilen läuft, die auf dem Bildschirm angezeigt werden, auch wenn ich nichts mit der Tabelle mache.
Soll das so sein? Sollte es nicht jede Zelle einmal gerendert haben, und das ist es? Wie kann ich es stoppen und nur bei Änderung neu berechnen?
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
log.debug("Building cell : " + row + "," + column);
Component comp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
Filter filter = (Filter)table.getModel().getValueAt(row, Column.CLASSIFICATION.getIndex());
comp.setBackground(filter.getColor());
return comp;
}
Dies ist nicht korrektes Verhalten. Können Sie ein eigenständiges Codebeispiel erstellen, das dies demonstriert? Es wird uns helfen, dieses Problem zu beheben. –
@Steve Ich denke, es wird zu viel Code sein. Ich habe gerade herausgefunden, dass ich einen anderen Renderer für bestimmte Zellen in der Tabelle habe. Kann es sein, dass sie sich gegenseitig feuern? – Yossale
Es könnte alles sein. Psychisches Debugging ist schwierig. Nur eine Hauptmethode, die einen JFrame erstellt, eine Tabelle hinzufügt, einen Zellenrenderer wie den bereits gezeigten setzt - und das gleiche Problem hat. –