Benutzerdefinierter Zellenrenderer für bestimmte Zeilen und Spalten
puuuuuuf, ich fange an, Swing zu mögen :) Ich versuche, einen CellRenderer zu schreiben, um alle Zellen außer denen, die in der ersten Zeile und in der ersten Spalte stehen, zu rendern. Also habe ich folgendes geschrieben:
public class CustomTableCellRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
Component cell = super.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, column);
if(row >0&&column>0){
cell.setBackground(Color.GREEN);
}
return cell;
}
}
und setze den Renderer wie folgt:
scheduleTable.setDefaultRenderer(Object.class, new CustomTableCellRenderer());
Aus irgendeinem Grund wird bei einem solchen Ansatz der Renderer auf alle Zellen angewendet. Alle von ihnen sind also grün. Wenn ich etwas falsch mache, können Sie mir bitte dabei helfen?
Danke im Voraus!
ZUSATZscheduleTable = new JTable() {
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component comp = super.prepareRenderer(renderer, row, column);
int modelRow = convertRowIndexToModel(row);
int modelColumn = convertColumnIndexToModel(column);
if (modelColumn != 0 && modelRow != 0) {
comp.setBackground(Color.GREEN);
}
return comp;
}
};
Mit diesem Code wird auch die gesamte Tabelle grün.
Dieser Code:
scheduleTable = new JTable(tableModel) {
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component comp = super.prepareRenderer(renderer, row, column);
int modelRow = convertRowIndexToModel(row);
int modelColumn = convertColumnIndexToModel(column);
if (modelRow != 0 && modelColumn != 0) {
setBackground(Color.GREEN);
} else {
setBackground(Color.WHITE);
}
return comp;
}
};
gibt mir folgendes Ergebnis; (
Die folgenden Situationen habe ich mit differentsn
im Ausdruckrow != 0 && column != 0
: