JTable - Nach Suche selektierte Zeilen anzeigen

takidoso

Erfahrenes Mitglied
Hallo und Halli,
leider finde ich nichts mit der Suche im Forum, selbst bei suche nach "JTable" wird nichts gefunden :confused:
Vielleicht kann mir ja jemand weiterhelfen.
Man stelle sich einen JTable in einem Scrollfenster vor. Der Anwender sucht erfolgreich mittels Dialog und Attributeingabe eine bestimmte Zeile in der Tabelle, die ziemlich groß ist.
Wie schafft man es genau diese Zeile in den sichtbaren Bereich des Scrollfensters zu bewegen? mir ist da nicht so ganz klar welche Mehtoden bzw Klassen anzurufen sind.

Zunächst muss man natürlich irgendwie feststellen, welche Zeile die gesuchte ist (also das mach dann eine Schleife durchs TableModel) man findet damit den Index der Zeile (ist kein Problem!)
- wie bringt man das aber in den sichtbaren Bereich gesetzt den Fall es ist nicht sichtbar?

Vorschläge werden dankend entgegengenommen.

Takidoso
 
Hallo und Halli,

Miten den richtigen Worten (JTable Viewport show Row) habe ich beim googeln richtig Tolles gefunden :)

http://forum.java.sun.com/thread.jspa?threadID=763968&messageID=4358195

des Pudels Kern ist dass man ein Recheck ermittelt welches man dem Viewport feierlich übergibt und zwar in der Form
Code:
Rectangle r = table.getCellRect(table.getSelectedRow(), 0, false);
scrollPane.getViewport().scrollRectToVisible(r);

Also das wars auch schon (!)

bis denne danne

Takidoso
PS:
Lasst Euch mal was einfallen bezüglich funktionierender Suche im Forum, das funktionierte schon mal besser :suspekt:
 
Hallole,
ich habe neulich bemerkt, dass der Beispiel-Code doch nicht ganz korrekt läuft. Man bemerkt das wenn man etwas gescrollt hat und dann wieder was sucht, was selektitiert weird und im sichtbaren Bereich landen soll.
Wenn man die Routine des Scrollpanles dafür verwendet wird zu viel gesctollt. Im JTable selbst gibt es eine Mehtode mit gleichem Namen, die das Problem erfolgreich löst.
somit heißt es nun anstelle von
Code:
scrollPane.getViewport().scrollRectToVisible(r);
so:
Code:
table.scrollRectToVisible(r);
dann klappt auch alles :-)

Takidoso
 
Zurück