Esta página fue traducida automáticamente del portugués y puede contener errores. La versión en portugués es la canónica.
Áreas de texto (TextArea)
TextArea es el campo de varias líneas — misma base (TextInput) que TextField, con salto de
línea, desplazamiento vertical e iconos por línea.
Ejemplo completo (copiar, pegar y ejecutar)
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.style.*; // TextAreaStyle (config de comportamiento)
/** Pantalla principal ejecutable. Apunta el launcher (classname) y corre: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
// Área multilínea: necesita altura explícita.
// Aquí vía fracción de container (40% de la altura); alternativa: autoHeight en el estilo.
TextArea obs = new TextArea().caption("Observações");
add(0.4f, obs);
// Etiqueta donde se mostrará el contenido leído
Label resultado = new Label("");
add(LAY_AUTO, resultado);
// NO hay callback por tecla: lee getText() al enviar
Button enviar = new Button("Enviar");
enviar.onAction(c -> resultado.setText("Chars = " + obs.getText().length()));
add(LAY_AUTO, enviar);
}
}
Los fragmentos siguientes muestran solo el núcleo (lo que va dentro de
onShow()). Para ejecutar, colócalos en el esqueletoMainWindowde arriba.
Uso básico
TextArea obs = new TextArea()
.caption("Observações")
.text("");
painel.add(0.5f, obs); // ocupa 50% de la altura del container (VerticalLayout)
// leer el contenido:
String texto = obs.getText();
Constructores y fluent API
| Miembro | Efecto |
|---|---|
new TextArea() / new TextArea("texto") |
vacío / con valor inicial |
.caption(String) |
leyenda |
.text(String) / setText(String) |
define el contenido |
.rightIcons(Icon...) |
iconos a la derecha, uno por línea de acción |
.rightIconAction(int linha, Action) |
acción de un icono específico |
getText() / clearText() |
leer / limpiar |
scrollToTop() · scrollToBottom() · scrollToLine(int) |
desplazamiento programático |
Dimensionar
A diferencia de TextField (altura de una línea), TextArea necesita altura explícita — dale una
fracción en un VerticalLayout o autoHeight en el estilo:
obs.getStyle().autoHeight(Relative.ofFont(6f)); // ~6 líneas de altura
Buenas prácticas
- Reserva altura suficiente (fracción de container o
autoHeight) — de lo contrario se vuelve un campo de 1 línea. - Usa
scrollToBottom()al añadir texto (ej.: log/chat) para mantener la última línea visible.
Errores comunes
- No definir altura → el área queda diminuta.
- Esperar desplazamiento horizontal —
TextAreahace salto de línea; usaTextFieldpara una línea desplazable.
Ver también
- Campos de texto · Foco y validación
- Catálogo: TextArea · Referencia: Capítulo 14
¿Te resultó útil esta página?¡Gracias por tu opinión!