Frage

Ich habe eine jScrollPane, die einen scrollbaren Client enthält, der seine Größe während der Verwendung der Anwendung dynamisch ändert. Ich möchte ohne das Ansichtsfenster zu verschieben, wenn sich die Kundengröße ändert.

Um zu verdeutlichen, was ich meine: Siehe Java Webstart -Beispiel Scroldemo2 Aus dem Artikel So verwenden Sie Scrollscheiben von Sonne. Beim Klicken unten im Fenster wird ein Kreis teilweise außerhalb des Fensters angezeigt und die Scrollbars bewegen sich. Es ist das letztere Verhalten, das ich vermeiden möchte.

Ich vermute, dass es nur darum geht, eine einfache Flagge in eine der vielen Komponenten festzulegen, die an einer Scan -Bereichslösung beteiligt sind, aber ich kann einfach nicht finden, wo es ist. Weiß jemand?

War es hilfreich?

Lösung

Ich habe es geschafft, dieses Problem zu lösen, indem ich das Standardverhalten des Ansichtsfensters in meinem jScrollPane überschrieben habe. Dies mag eine Lösung sein, die nicht für alle geeignet ist, aber in meiner GUI funktioniert dies wie ein Zauber.

JScrollPane pane = new JScrollPane();
pane.setViewport(
  new JViewport(){
    /**
     * An empty override implementation to prevent undesired scrolling on
     * size changes of the client.
     */
     @Override
     public void scrollRectToVisible(Rectangle rect){}
  });

Andere Tipps

Ich würde so etwas versuchen wie:

Point p = scrollPane.getViewport().getViewportPosition();
revalidate();
scrollPane.getViewport().setViewportPosition(p);

Möglicherweise müssen Sie die letzte Codezeile in einen Swingutilities einwickeln.

Wenn das nicht funktioniert, können Sie das Ansichtsfenster vor und nach dem neu idieren () deaktivieren/aktivieren?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top