Beinke: JScrollPane: Scrollleiste auf Anfangsposition setzten

Hallo,
ich weise eine JEditorPane (mit Scrollleiste) per .setText() einen längeren Text bei der Inititialisierung zu. Dadurch wird leider gleich der Scrollbalken aktiv und verschiebt sich nach unten.

Wie kann ich ihn im Quellcode auf die Anfangsposition zurücksetzten?

Beste Grüße!
Beinke

  1. Guten Morgen,

    [...]

    Wie kann ich ihn im Quellcode auf die Anfangsposition zurücksetzten?

    Kennst Du die Java Swing How Tos? Du hast in den letzten Tagen einige Fragen dazu gestellt, die dort mit hoher Wahrscheinlichkeit beantwortet werden: http://java.sun.com/docs/books/tutorial/uiswing/components/componentlist.html
    Zu Deiner aktuellen Frage könnte JComponent#scrollRectToVisible(Rectangle) das Richtige für Dich sein.

    Schöne Grüße,

    Peter

    1. Hallo Peter,

      mit JComponent#scrollRectToVisible(Rectangle) komme ich irgendwie nicht weiter.

      Ich dachte auch schon ich hätte mit

      //Code:
      JScrollBar bar = MeineScrollPane.getVerticalScrollBar();
      bar.setValue( bar.getMinimum() );  //bar.getMinimum() == 0

      die Lösung. Klappt aber leider nicht.

      Beste Grüße!
      Beinke

      PS:
      Java Swing How Tos werde ich mir mal anschauen. Danke für den Tip!

      1. [...] Klappt aber leider nicht. [...]

        Das mit Deiner Fehlerbeschreibung klappt aber leider nicht. ;)
        Was hast Du, was erwartest Du, was erhältst Du?

        Schöne Grüße,

        Peter

        1. Hier mein Quellcode (das wesentliche):
          --------------
          ...
          meineJScrollPane = new JScrollPane(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
          ...
          meineJEditorPane = new JEditorPane();
          ...
          meineJScrollPane.setViewportView(meineJEditorPane);
          ...
          --------------
          //Ausgabe von...
          System.out.println( meineJScrollPane1.getViewport().getVisibleRect() );
          //liefert immer:
          java.awt.Rectangle[x=0,y=0,width=0,height=0]

          Zu meinem letzten Posting:
          bar.getMinimum() liefert 0
          bar.getMaximum() liefert 100

          Warum ich aber per

          bar.setValue(0);

          kein Verschieben Scroll-Anfassers auf Position 0 erreiche - keine Ahnung!

          1. Guten Morgen,

            [...]
            meineJScrollPane = new JScrollPane(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
            ...
            meineJEditorPane = new JEditorPane();
            ...
            meineJScrollPane.setViewportView(meineJEditorPane);
            ...

            //Ausgabe von...
            System.out.println( meineJScrollPane1.getViewport().getVisibleRect() );
            //liefert immer:
            java.awt.Rectangle[x=0,y=0,width=0,height=0]
            [...]
            Warum ich aber per
            bar.setValue(0);
            kein Verschieben Scroll-Anfassers auf Position 0 erreiche - keine Ahnung!

            Hast Du es denn auch mal mit der von mir oben genannten Methode probiert? Steht in dem Tutorial nichts zum Thema programmatisch scrollen? Vielleicht fehlt bei Deiner direkten Manipulation der Scrollbar ein repaint.

            Schöne Grüße,

            Peter

            1. Bei Deinem

              meineJEditorPane.scrollRectToVisible(???);

              weiß ich nicht welchen Parameter ich da eingeben soll (habe ein new Rectangle(0,0,0,0) versucht, brachte aber nichts).

              repaint() brachte auch nichts.

              Ich gebe die Sache jetzt erst einmal vorerst auf. Als Anfänger fehlt mir da einfach noch das nötige Hintergrundwissen. Vielleicht finde ich ja doch noch irgendwann Beispielcode zu genau diesem Problem im Web.

              Vielen herzlichen Dank nochmal für Deine Hilfe!
              Beinke

              1. Ich habe eine zumindest eine (leicht unsaubere) Lösung:

                meineJEditorPane.setCaretPosition(0);

                Kleiner Schönheitsfehler dabei:
                Der Cursor ist leider nicht mehr am Ende des Textes, sondern am Anfang des Textes.

                Wem das nicht reicht:
                Diese Seite habe ich gerade gegoogelt (klingt SEHR vielversprechend und behandelt genau mein Thema):
                http://www.tutorials.de/forum/swing-java2d-3d-swt-jface/317815-jsrollbar-bzw-jscrollpane-automatisch-nach-oben-scrollen.html

                Die Seite bietet mind. 2 Lösungswege, die wohl auch bei den Autoren funktionierten. Bei mir funktionierten sie nicht (habe aber auch wie gesagt nicht den nötigen Durchblick in der Materie).