Hallo,
ich habe eine 2-spaltige Tabelle mit 48 Reihen. Die erste Spalte zeigt hart codiert die Tageszeit in 30min-Schritten an, beginnend mit 00:00 bis 23:30. Die zweite Spalte soll programmabhängig Strings aufnehmen.
Nun soll vom Benutzer eine Zeitspanne über Eingabe von Start- und Endzeit die Einfärbung aller betroffenen Zeilen auslösen. Die Eingabe setzt die int-Variablen startRow und endRow sowie boolean spansTwoDays in anderer Methode. Der nachfolgende Code funktioniert auch bis auf die Tatsache , dass die zweite Bedingung in Zeile 12 nicht berücksichtigt wird. Es werden ab endRow-1 alle Zeilen bis 23:30 eingefärbt.
Ich hätte erwartet das ab 'startRow' die Einfärbung nicht mehr durchgeführt wird.
Die erste if-Anweisung behandelt den Standardfall, dass der Anfang des Zeitbereiches vor dem Ende liegt. Die else-Anweisung ist für den Fall zuständig, dass eine Zeitspanne eingegeben wird, die die 00:00 Uhr-Marke überschreitet. In diesem Fall liegt dann endRow vor startRow.
Für den Fall 'row > startRow' darf dann keine Einfärbung erfolgen. Aber diese wird durchgeführt. Warum? Hat vielleicht jemand eine Idee? Danke schon jetzt.
NACHTRAG: 'cr' ist der default CellRenderer.
Bib
ich habe eine 2-spaltige Tabelle mit 48 Reihen. Die erste Spalte zeigt hart codiert die Tageszeit in 30min-Schritten an, beginnend mit 00:00 bis 23:30. Die zweite Spalte soll programmabhängig Strings aufnehmen.
Nun soll vom Benutzer eine Zeitspanne über Eingabe von Start- und Endzeit die Einfärbung aller betroffenen Zeilen auslösen. Die Eingabe setzt die int-Variablen startRow und endRow sowie boolean spansTwoDays in anderer Methode. Der nachfolgende Code funktioniert auch bis auf die Tatsache , dass die zweite Bedingung in Zeile 12 nicht berücksichtigt wird. Es werden ab endRow-1 alle Zeilen bis 23:30 eingefärbt.
Ich hätte erwartet das ab 'startRow' die Einfärbung nicht mehr durchgeführt wird.
Java:
@Override
public TableCellRenderer getCellRenderer(int row, int column) {
if (!spansTwoDays && (row < startRow) || (row > endRow)){
return cr;
}
else {
boolean b = (row > endRow-1 && row < startRow);
if (spansTwoDays && b){
return cr;
}
else {
return super.getCellRenderer(row,column);
}
}
}
Die erste if-Anweisung behandelt den Standardfall, dass der Anfang des Zeitbereiches vor dem Ende liegt. Die else-Anweisung ist für den Fall zuständig, dass eine Zeitspanne eingegeben wird, die die 00:00 Uhr-Marke überschreitet. In diesem Fall liegt dann endRow vor startRow.
Für den Fall 'row > startRow' darf dann keine Einfärbung erfolgen. Aber diese wird durchgeführt. Warum? Hat vielleicht jemand eine Idee? Danke schon jetzt.
NACHTRAG: 'cr' ist der default CellRenderer.
Bib
Zuletzt bearbeitet: