Desplácese hacia abajo automáticamente JTextArea para mostrar las últimas líneas añadido

He escrito una aplicación Java que recibe información de un servidor cada 10 segundos. Estoy deseando mostrar esta información en un formulario.

Actualmente estoy usando un JTextArea. Sin embargo, una vez que el JTextArea se llena, no puedo ver la información nueva que se agrega a esta JTextArea. Tengo que agregar barras de desplazamiento para el JTextArea? O es que hay un nuevo completamente diferentes de control de la GUI de formas que se recomienda para mostrar la información que se añade cada x segundos?

InformationsquelleAutor user2381256 | 2013-05-18

2 Kommentare

  1. 10

    DefaultCaret trata de hacer visible lo que puede conducir al desplazamiento de un componente de texto dentro de JScrollPane. El símbolo de intercalación predeterminada de comportamiento puede ser cambiado por el DefaultCaret#setUpdatePolicy método.

    Suposición de que el nombre de la variable es textArea, sólo es necesario modificar la directiva de intercalación:

    DefaultCaret caret = (DefaultCaret) textArea.getCaret(); //←
    caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);       //←
    ...
    JScrollPane scrollPane = new JScrollPane();
    scrollPane.setViewportView(textArea);

    * Gracias, mKorbel

    • por favor utilice DefaultCaret caret = (DefaultCaret)textArea.getCaret(); y caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); lugar,
  2. 3

    Necesito para agregar barras de desplazamiento para el JTextArea?

    Agregar el área de texto a un JScrollPane. Ver Cómo Utilizar Paneles de Desplazamiento para obtener más información & ejemplos.

    Aquí está un ejemplo:

    Desplácese hacia abajo automáticamente JTextArea para mostrar las últimas líneas añadido

    import java.awt.*;
    import java.io.*;
    import javax.swing.*;
    
    class TextAreaScrolling {
    
        public static void main(String[] args) {
            Runnable r = new Runnable() {
    
                @Override
                public void run() {
                    final JTextArea out = 
                            new JTextArea(5,10); //suggest columns & rows
                    JScrollPane outScroll = new JScrollPane(out);
    
                    File f = new File("TextAreaScrolling.java");
                    try {
                        Reader reader = new FileReader(f);
                        out.read(reader, f);
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }
    
                    JOptionPane.showMessageDialog(null, outScroll);
                }
            };
            //Swing GUIs should be created and updated on the EDT
            //http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html
            SwingUtilities.invokeLater(r);
        }
    }
    • puedo downvote esta gran respuesta demasiado 🙂 por favor, por favor, por favor ….
    • Seguro, pero hacen un ‘sistemática voto’ que le reconoce como tal, como el grupo de los 4 de abajo votos que este fue uno de. 😉
    • +1 porque mi resultado es muy diverso (EDICIÓN de batería baja en mi teclado inalámbrico)

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea