JTable wird bei scrollen falsch gezeichnet

JGogo

Mitglied
Hallo,

habe ein Problem zu meinem JTable:

Ich scrolle wie folgt zu der derzeit selektierten Zeile in der Tabelle :
Java:
//...
x = (int)((Rectangle)auftraege.getCellRect( auftraege.getSelectedRow(), 0, true )).getX();
y = (int)((Rectangle)auftraege.getCellRect( auftraege.getSelectedRow(), 0, true )).getY();
((JViewport)auftraege.getParent()).setViewPosition( new Point( x, y ));
das funktioniert ja auch so weit, jedoch wenn ich zum Beispiel versuche zu einem Eintrag am Ende des JTables zu scrollen (oder zu scrollen wenn nur sichtbare Einträge in der Tabelle sind), wird die JTable falsch gezeichnet, d.h. es werden die Zeilen teilweise doppelt dargestellt. Also es wird über die richtig dargestellte Tabelle, quasi eine zweite gezeichnet, damit zu der gewählten Zeile tatsächlich gescrollt werden kann.

Es kommt keine Fehlermeldung, und wenn ich z.B. die Größe des Fensters verändere, ist der Fehler wieder weg. Also vermute ich irgendetwas beim repaint() oder so.

Hoffe, ich konnte ungefähr schildern was das Problem ist und irgendwer kann mir helfen.

P.S. natürlich könnt ich bevor ich hinscrolle die Größe der Tabelle anschauen und ausrechnen, ob ich auch tatsächlich dorthinscrollen kann. Gehe aber davon aus, dass es eine wesentlich elegantere Lösung gibt!
 
...sorry, "auftraege" ist natürlich das JTable!
und wenn ich ein
Java:
auftraege.getParent().validate();
nachschicke, dann stimmt anschließend die Anzeige zwar, aber es flackert einmal die falsche Anzeige kurz auf!
 
Was für eine Fehlermeldung?

Und schon mal probiert einfach mit folgendem zu scrollen:
Java:
table.scrollRectToVisible(table.getCellRect(table.getSelectedRow(), 0, true));
 
Danke für die Antwort, werde ich probieren.

Wie bereits geschrieben, es kommt keine Fehlermeldung, er zeichnet die Tabelle nur falsch. Zur Zeit habe ich es halt mit table.getParent().validate() gelöst - flimmert kurz, aber wenigstens passt anschließend die Tabelle.
 

Zurück
Oben