Pregunta

Quiero mi JTextArea para cambiar el tamaño en sí (ampliar verticalmente) cuando se alcanza la última línea (que la altura del área de texto puede ofrecer) y el usuario quiere iniciar una nueva línea. Ya sabes, como el cuadro de texto en MS Word.

Tengo una idea de usar getLineCount() y determinar (si es necesario) la nueva altura del JTextArea. ¿Tiene, o sabe de mejores enfoques para implementar esto?

¿Fue útil?

Solución

En realidad, el JTextArea siempre tiene el tamaño correcto para todas las líneas de texto son visibles. Lo que experimentas es probable que envuelven el área de texto en un JScrollPane. Basta con omitir el panel de desplazamiento y hacer que el área de texto de un hijo directo del contenedor.

Otra solución es escuchar a cambiar el tamaño de los eventos del área de texto y el tamaño del panel de desplazamiento en consecuencia. De esta forma, puede crecer hasta cierto tamaño y luego comenzar a barras de desplazamiento de la pantalla (por ejemplo, cuando alguien pega 500 KB de texto en el área de texto).

Otros consejos

Yo tenía el mismo problema. De mis pruebas, no creo que el JTextArea establece su tamaño de forma dinámica. En su lugar, su tamaño parece estar limitado por su contenedor (un JPanel en mi caso). Sin embargo, el JTextArea hace cambiar su tamaño preferido basado en el texto que contiene. A partir de la documentación:

  

java.awt.TextArea tiene dos filas propiedades y columnas que se utilizan para determinar el tamaño preferido. JTextArea utiliza estas propiedades para indicar el tamaño preferido de la ventana gráfica cuando se coloca dentro de un JScrollPane para que coincida con la funcionalidad proporcionada por java.awt.TextArea. JTextArea tiene un tamaño preferido de lo que se necesita para mostrar todo el texto, de modo que funcione correctamente en el interior de un JScrollPane. Si el valor de filas o columnas es igual a cero, el tamaño preferido a lo largo de ese eje se utiliza para el tamaño preferido de visualización a lo largo del mismo eje.

Yo tenía el mismo problema, puse el JTextArea en un JScrollPane y establecer el tamaño preferido de JTextArea, y yo creo que esa es la causa del problema.

Así que la solución correcta es poner el JTextArea en un JScrollPane, y no toque el tamaño preferido de JTextArea, ajuste de JScrollPane lugar.

A JTextArea " Propiedades " - lista de verificación " lineWrap ".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top