Hi,
ich habe ein Scrollpane mit lauter JTextfields drin. Wenn ich nun Return in einem Textfield tippe, dann ändere ich mit einem ActionListener automatisch den Focus auf das nächste Feld, damit man schön die Eingaben nacheinander abarbeiten kann ohne die Maus anfassen zu müssen. Klappt auch wunderbar.
Nun ist es aber so, dass wenn man unten bei dem Textfield angekommen ist was auf dem Panel heraus gescrollt ist, ich das Panel gerne scrollen würde, so dass das dann aktiv werdende Textfield auch sichtbar ist.
Das ScrollPane selber besteht auch sehr vielen einzelnen Panels alle mit BoxLayout. Ich habe das mal schematisch dargestellt in dem angefügten Bild. Das Blaue ist das Scrollpane, darin liegen die roten Panels, eins pro Zeile und darin jeweils 2 TextFields. Das muss auch so sein.
Wenn ich jetzt einfach
mache, dann klappt das leider nicht. Ich habe auch schon versuch nicht den ViewPort vom Scrollpane sondern die roten, blauen oder gelben Panels anzugeben. Alles ohne Ergebnis.
Die bounds() von den Textfields sind natürlich alle gleich (Also die von den linken sind anders als die von den rechten aber die linken haben natürlich alle die gleichen Bounds, da sie ja relativ zu den roten Panels sitzen) Hat das was damit zu tun?
Eigentlich hatte ich das so verstanden, dass das scrollRectToVisible selbständig die Parents hochhangelt bis es das richtige Panel zum Scrollen gefunden hat.
Was mache ich falsch oder habe ich irgendwas vergessen?
Danke
Claus
ich habe ein Scrollpane mit lauter JTextfields drin. Wenn ich nun Return in einem Textfield tippe, dann ändere ich mit einem ActionListener automatisch den Focus auf das nächste Feld, damit man schön die Eingaben nacheinander abarbeiten kann ohne die Maus anfassen zu müssen. Klappt auch wunderbar.
Nun ist es aber so, dass wenn man unten bei dem Textfield angekommen ist was auf dem Panel heraus gescrollt ist, ich das Panel gerne scrollen würde, so dass das dann aktiv werdende Textfield auch sichtbar ist.
Das ScrollPane selber besteht auch sehr vielen einzelnen Panels alle mit BoxLayout. Ich habe das mal schematisch dargestellt in dem angefügten Bild. Das Blaue ist das Scrollpane, darin liegen die roten Panels, eins pro Zeile und darin jeweils 2 TextFields. Das muss auch so sein.
Wenn ich jetzt einfach
Java:
public void focusGained(FocusEvent e)
{
JComponent comp = (JComponent) e.getSource();
System.out.println(comp.getBounds(null));
this.scrollPane.getViewport().scrollRectToVisible(comp.getBounds(null));
}
mache, dann klappt das leider nicht. Ich habe auch schon versuch nicht den ViewPort vom Scrollpane sondern die roten, blauen oder gelben Panels anzugeben. Alles ohne Ergebnis.
Die bounds() von den Textfields sind natürlich alle gleich (Also die von den linken sind anders als die von den rechten aber die linken haben natürlich alle die gleichen Bounds, da sie ja relativ zu den roten Panels sitzen) Hat das was damit zu tun?
Eigentlich hatte ich das so verstanden, dass das scrollRectToVisible selbständig die Parents hochhangelt bis es das richtige Panel zum Scrollen gefunden hat.
Was mache ich falsch oder habe ich irgendwas vergessen?
Danke
Claus
Zuletzt bearbeitet: