67 votes

Comment définir le défilement automatique de JTextArea dans l'interface graphique Java?

J'ai intégré un JTextArea sur un JScrollPane et j'utilise ce JTextArea pour la sortie.

Je veux que chaque fois que la sortie dépasse la taille du JTextArea, le JTextArea défile automatiquement afin que l'utilisateur n'ait pas à faire défiler manuellement vers le bas pour voir la sortie récente.

Comment puis je faire ça?

J'ai déjà défini la propriété autoscroll de JTextArea et JScrollPane sur true.

150voto

camickr Points 137095

Lors de l'utilisation de JDK1.4.2 (ou plus tôt) est le plus commun suggestion, vous trouverez dans les forums est d'utiliser le code suivant:

textArea.append(...);
textArea.setCaretPosition(textArea.getDocument().getLength());

Cependant, je viens de remarqué que dans JDK5 cette question a été effectivement résolu par une API changement. Vous pouvez maintenant contrôler ce comportement en définissant une propriété sur la DefaultCaret de la zone de texte. En utilisant cette approche, le code serait:

JTextArea textArea = new JTextArea();
DefaultCaret caret = (DefaultCaret)textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);

Une description plus détaillée de ce sujet peuvent être trouvées ici: Zone de Texte Défilant

2voto

user211233 Points 21
    JScrollBar vbar = scrollPane.getVerticalScrollBar();

    for (int i = 0; i < 20; i++) {

        myJTxt.append("This is text " + i + "\n");
        vbar.setValue(vbar.getMaximum());
        vbar.paint(vbar.getGraphics());
        myJTxt.scrollRectToVisible(myJTxt.getVisibleRect());
        myJTxt.paint(myJTxt.getGraphics());
        try {
            Thread.sleep(250);
        } catch (InterruptedException ex) {
            Logger.getLogger(ScrollTextView.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

2voto

user3100921 Points 93

Lorsque vous cliquez n'importe où sur JTextArea, le défilement automatique peut être arrêté. Comme la position du curseur a changé une fois, le point de vue a également changé. Pendant ce temps, vous devez définir la position du curseur lorsque vous ajoutez ou ajoutez du texte. En chemin, j'ai créé une méthode comprenant la position du curseur, puis je l’utilise quand quelque chose doit être ajouté ou ajouté.

-3voto

Honest Points 19
<pre><code></code><p>vous pouvez les utiliser pour résoudre peoblem.</p></pre>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X