TextArea
El componente TextArea proporciona un campo de entrada de texto de varias líneas donde los usuarios pueden escribir y editar bloques más largos de texto. Soporta límites máximos de caracteres, estructura de párrafos, ajuste de líneas y reglas de validación para controlar cómo se maneja la entrada.
Creando un TextArea
Crea un TextArea pasando una etiqueta a su constructor. Propiedades como texto de marcador de posición, límites de caracteres y comportamiento de ajuste pueden configurarse a través de métodos de establecimiento.
Mostrar Código
- TextAreaView.java
Gestión de párrafos
El componente TextArea proporciona características para manejar párrafos de texto, lo que lo hace ideal para aplicaciones que requieren edición de documentos o entrada de texto estructurado.
Aquí hay un ejemplo rápido de cómo construir y manipular el contenido de los párrafos:
TextArea textArea = new TextArea();
// Insertar un párrafo al principio
textArea.addParagraph(0, "Este es el primer párrafo.");
// Agregar otro párrafo al final
textArea.addParagraph("Aquí hay un segundo párrafo.");
// Agregar contenido adicional al primer párrafo
textArea.appendToParagraph(0, " Esta oración continúa la primera.");
// Eliminar el segundo párrafo
textArea.removeParagraph(1);
// Recuperar e imprimir todos los párrafos actuales
List<String> paragraphs = textArea.getParagraphs();
for (int i = 0; i < paragraphs.size(); i++) {
System.out.println("Párrafo " + i + ": " + paragraphs.get(i));
}
Validación
El componente TextArea admite dos tipos complementarios de validación: restricciones estructurales y restricciones de contenido.
Las restricciones estructurales se centran en cómo se organiza y presenta visualmente el texto. Por ejemplo:
setLineCountLimit(int maxLines)restringe el número de líneas permitidas en el área de texto.setParagraphLengthLimit(int maxCharsPerLine)limita el número de caracteres por párrafo (o línea), ayudando a hacer cumplir estándares de legibilidad o formato.
Las restricciones de contenido, por otro lado, se ocupan de la cantidad total de texto ingresado, independientemente de cómo esté distribuido:
setMaxLength(int maxChars)establece un límite máximo al número total de caracteres permitidos en todos los párrafos.setMinLength(int minChars)impone una longitud mínima, asegurando que se proporcione suficiente contenido.
La siguiente demostración permite a los usuarios ajustar los límites de validación, como el conteo máximo de caracteres, la longitud de los párrafos y el conteo de líneas, en tiempo real y ver cómo responde el TextArea.
Mostrar Código
- TextAreaValidationView.java
Ajuste de palabras y ajuste de líneas
Puedes controlar si el texto se ajusta o se desplaza horizontalmente utilizando setLineWrap(). Cuando el ajuste está desactivado, las líneas continúan horizontalmente más allá del área visible, requiriendo desplazamiento. Cuando está habilitado, el texto se ajusta automáticamente a la siguiente línea cuando llega al borde del componente.
Para refinar aún más cómo se comporta el ajuste, setWrapStyle() te permite elegir entre dos estilos:
WORD_BOUNDARIESajusta el texto en palabras completas, preservando el flujo natural de lectura.CHARACTER_BOUNDARIESajusta en caracteres individuales, permitiendo un control más estricto sobre la disposición, especialmente en contenedores estrechos o de ancho fijo.
Estas opciones de ajuste funcionan de la mano con restricciones estructurales como los límites de conteo de líneas y longitud de párrafos. Mientras que el ajuste determina cómo fluye el texto dentro del espacio disponible, los límites estructurales definen cuánto espacio se permite ocupar al texto. Juntos, ayudan a mantener tanto la estructura visual como los límites de entrada del usuario.
Mostrar Código
- TextAreaWrapView.java
Texto predecido
El componente TextArea admite sugerencias inteligentes de texto para ayudar a los usuarios a escribir más rápido y con menos errores. A medida que los usuarios ingresan texto, aparecen sugerencias predictivas basadas en la entrada actual, lo que les permite completar frases comunes o esperadas.
Las predicciones pueden aceptarse presionando la tecla Tab o ArrowRight, insertando el texto sugerido en la entrada de forma fluida. Si no hay ninguna predicción adecuada disponible en un momento dado, la entrada permanece sin cambios, y el usuario puede continuar escribiendo sin interrupciones, asegurando que la función nunca se interponga.
Este comportamiento predictivo mejora tanto la velocidad como la precisión, especialmente en escenarios de entrada repetitiva o aplicaciones donde la consistencia de la frase es importante.
Mostrar Código
- TextAreaPredictedTextView.java
- text-area-predicted-text-view.css
Esta demostración utiliza la API Datamuse para proporcionar sugerencias de palabras basadas en la entrada del usuario. La calidad y relevancia de las predicciones dependen completamente del conjunto de datos y el mecanismo de puntuación de la API. No utiliza modelos de IA o modelos de lenguaje grandes (LLMs); las sugerencias se generan a partir de un motor ligero basado en reglas centrado en la similitud léxica.
Estado de solo lectura y desactivado
El componente TextArea puede configurarse en modo solo lectura o desactivado para controlar la interacción del usuario.
Un área de texto solo lectura permite a los usuarios ver y seleccionar el contenido, pero no editarlo. Esto es útil para mostrar información dinámica o prellenada que debe permanecer sin cambios.
Por otro lado, un área de texto desactivada bloquea toda interacción, incluyendo el enfoque y la selección de texto, y típicamente se presenta como inactiva o atenuada.
Utiliza el modo solo lectura cuando el contenido es relevante pero inmutable, y el modo desactivado cuando la entrada no es actualmente aplicable o debería estar temporalmente inactiva.
Mostrar Código
- TextAreaStatesView.java