Estoy tratando de implementar un JScrollPane con un JTextArea. Se está añadiendo JTextArea, y quiero que JScrollPane continúe desplazándose a medida que se agrega más texto. ¿Cómo se puede lograr esto?Hacer que un JScrollPane se desplace automáticamente hasta el final
Respuesta
Por (lo que creo que es) una respuesta más simple salida: Text Area Scrolling.
Antes de JDK5, debería cambiar manualmente la posición de la referencia después de cada anexión. Ahora usted puede dar este comportamiento por defecto de esta manera:
JTextArea textArea = new JTextArea(); DefaultCaret caret = (DefaultCaret)textArea.getCaret(); caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
La ventaja de esto es que no es necesario utilizar este fragmento más de una vez en su código!
he encontrado la respuesta aquí: JScrollPane and JList auto scroll
scrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {
public void adjustmentValueChanged(AdjustmentEvent e) {
e.getAdjustable().setValue(e.getAdjustable().getMaximum());
}
});
Su "solución" es en realidad el problema de la ligada a la pregunta: si intenta manualmente para mover el asa de desplazamiento vertical, este código se desplazará al fondo nuevamente! – jackrabbit
Es posible evitarlo: puede declarar ese oyente como una clase y luego crear una instancia en el evento donde sea necesario. Después de lo cual puede eliminar la clase después de forzar el repintado de la pantalla. Funciona de maravilla.
Si usted está constantemente escribiendo datos en ella puede usar:
textArea.setCaretPosition(textArea.getDocument().getLength());
justo después de agregar los nuevos datos.
Esto se desplazará automáticamente por todo el JScorllPane.
mientras sea posible, no es la mejor solución, que es la respuesta de @camickr :-) – kleopatra
+1 por un buen trabajo. –
Aquí está la solución.
JTextArea textArea = new JTextArea();
DefaultCaret caret = (DefaultCaret)textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);`
Esto es solo código, sin descripción, por lo tanto, no hay respuesta. –
+1 para la respuesta correcta, aunque es lo mismo que la respuesta aceptada por Rob :-) – kleopatra
(PS: Edición de lanzamiento de la pantalla)
import javax.swing.*;
import javax.swing.text.DefaultCaret;
public class NewClass {
public static void main(String[] args) {
JFrame win = new JFrame("test");
win.setSize(800, 500);
win.setResizable(false);
win.setLayout(null);
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
win.setLocationRelativeTo(null);
JTextArea txtListNum = new JTextArea();
JScrollPane barList = new JScrollPane(txtListNum);
DefaultCaret crList = (DefaultCaret) txtListNum.getCaret();
crList.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
barList.setLocation(10, 10); // Scrollbar Position
barList.setSize(180, 450); // Scrollbar Dimession
win.add(barList); // Scrolbar add to Frame
win.setVisible(true);
}
}
- 1. Hacer que Java JScrollpane solo se desplace verticalmente
- 2. WPF ListBox Desplácese hasta el final automáticamente
- 3. ¿Cómo hacer que Rails represente una vista y se desplace automáticamente hacia abajo?
- 4. ¿Cómo puedo hacer que el Silverlight ScrollViewer se desplace para mostrar un control secundario con foco?
- 5. Python: Metaclasses hasta el final
- 6. Cómo hacer que la imagen se desplace en css?
- 7. ¿Hay alguna manera de hacer que jqGrid se desplace hasta la parte inferior cuando se agrega una nueva fila?
- 8. ¿Evitar que UITableView se desplace?
- 9. desplazarse por la página automáticamente hasta que el usuario se desplaza hasta
- 10. Cómo puedo evitar que el editor de Visual Studio se desplace horizontalmente automáticamente cuando se golpea un punto de interrupción
- 11. ¿Cómo puedo hacer un desplazamiento de RichTextBox hasta el final cuando agrego una nueva línea?
- 12. ¿Cómo hago para que UIWebView se desplace hasta la parte superior?
- 13. ¿Cómo borrar hasta el final del delimitador?
- 14. ¿Cómo hacer que las secuencias de comandos se eliminen automáticamente al final de la ejecución?
- 15. Cómo hacer que un video incrustado no se reproduzca automáticamente
- 16. ¿Cómo hago que JScrollPane scroll siga el enfoque de entrada?
- 17. iphone - previene que uiscrollview se desplace por el tacto
- 18. ¿Existe una manera simple de hacer que un ListView se desplace automáticamente al elemento agregado más recientemente sin tener que escribir ningún código en el código?
- 19. ¿Cómo puedo abandonar un IEnumerator sin iterar hasta el final?
- 20. Vim: cambiar/borrar hasta el final de un "bloque"
- 21. jQuery - Espera hasta el final de SlideUp()
- 22. ¿Cómo puedo hacer que ScrollViewer se desplace por el área de visualización?
- 23. ¿Cómo puedo hacer que UITextView se desplace correctamente cuando el teclado está visible?
- 24. Cómo hacer que ScrollViewer se desplace cuando el mouse está sobre * cualquier * contenido
- 25. Cómo evitar que fb.ui() se desplace por el navegador
- 26. Evitar que UIWebView se desplace cuando aparezca el teclado
- 27. ¿Cómo impido que UIScrollView se desplace automáticamente cuando se desplaza un UITextField fuera del marco de la vista de desplazamiento?
- 28. ¿Cómo puedo eliminar el hash de ubicación sin hacer que la página se desplace?
- 29. cómo podemos hacer que el diseño de la tabla se desplace en ambos sentidos (horizontal, verticalmente)
- 30. jscrollpane bloque desplazando padre
+1 La API 'setUpdatePolicy()' explica _so_ much. He actualizado mi respuesta a la pregunta citada en consecuencia. – trashgod
Sí, la API cambia continuamente para mantenerse al día con los cambios todo el tiempo. – camickr
Esto ayuda, pero si los usuarios hacen clic en cualquier lugar que no sea el final de la última línea, el desplazamiento automático se detiene. Esto no es intuitivo. Sería bueno si el comportamiento habitual funcionó, simplemente al desplazarse hacia abajo, el auto-scroll se reactiva. – jcalfee314