web-dev-qa-db-fra.com

Java Swing - Utiliser JScrollPane et le faire défiler vers le haut

J'utilise JScrollPane pour permettre le défilement dans un JFrame qui a un composant texte qui sert d'éditeur de texte. Ce que je veux faire, après avoir défini le texte dans cet éditeur, c'est le faire défiler vers le haut, afin que vous puissiez voir ce qui est au début du fichier.

Est-ce que quelqu'un sait comment faire ça?

74
Robyn

L'appel setCaretPosition (0) sur votre composant texte le fera défiler vers le haut.

122
Craig

Juste au cas où vous n'utilisez pas de composant texte, jetez un œil au fil publié ici .... Définition de la barre de défilement sur un JScrollPane

Leur solution est de dériver un fil via invokeLater

final JScrollPane scroll = new JScrollPane(text);
javax.swing.SwingUtilities.invokeLater(new Runnable() {
   public void run() { 
       scroll.getVerticalScrollBar().setValue(0);
   }
});
35
Eric Warriner

Cela rendra le travail:

DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE);
10
Pb600

Utilisez JComponent.scrollRectToVisible ()

Si vous avez besoin de plus d'informations, voici un article

7
ykaganovich

Vous pouvez utiliser la méthode setCaretPosition(0) juste après setText(String t) de votre composant texte.

7
aosphyma

Vous pouvez essayer ceci:

 scrollPane.getViewport().setViewPosition(new Point(0,0));

Selon les JavaDocs, setViewPosition () se comporte comme ceci:

Définit les coordonnées de la vue qui apparaissent dans le coin supérieur gauche de la fenêtre, ne fait rien s'il n'y a pas de vue.

6
Vincent Ramdhanie

Voici comment:

textArea.setSelectionStart(0);
textArea.setSelectionEnd(0); 
1
Richard T