poner configurar como agregar java user-interface swing jscrollpane jtextarea

configurar - scroll panel java



¿Cómo establecer AUTO-SCROLLING de JTextArea en Java GUI? (6)

Al hacer clic en cualquier lugar de JTextArea, es posible detener el desplazamiento automático. Debido a que la posición del cursor una vez cambió, el punto de vista también cambió. En este momento, debe establecer la posición de intercalación cuando agregue o agregue texto. En el camino, hice un método que incluye establecer la posición de intercalación, y luego usarlo cuando se agregue o adjunte algo.

He incrustado un JTextArea en un JScrollPane y estoy usando ese JTextArea para la salida.

Quiero que siempre que la salida exceda el tamaño de JTextArea, JTextArea se desplace automáticamente para que el usuario no tenga que desplazarse manualmente hacia abajo para ver la salida reciente.

¿Cómo puedo hacer eso?

Ya he configurado la propiedad autoscroll de JTextArea y JScrollPane como verdadera.


Al usar JDK1.4.2 (o anterior), la sugerencia más común que encontrará en los foros es usar un código como el siguiente:

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

Sin embargo, me acabo de dar cuenta de que en JDK5 este problema se ha resuelto con un cambio de API. Ahora puede controlar este comportamiento estableciendo una propiedad en DefaultCaret del área de texto. Usando este enfoque, el código sería:

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

Puede encontrar una descripción más detallada de este tema aquí: Desplazamiento del área de texto


Prueba esto:

JTextArea jTextArea = new JTextArea(); JScrollPane jScrollPane = new JScrollPane(); jScrollPane.setViewport(jTextArea);


Use esto en su lugar

JTextArea textArea = new JTextArea(); DefaultCaret caret = (DefaultCaret)textArea.getCaret(); caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); scrollPane = new JScrollPane(); scrollPane.add(textArea); scrollPane.setViewportView(textArea);


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); } }


JTextArea jTextArea = new JTextArea(); DefaultCaret caret = (DefaultCaret)jTextArea.getCaret(); caret.setUpdatePolicy(DefaultCaret.OUT_BOTTOM);