Saltar al contenido
CrossFly es 100% open sourceSíguenos en GitHub
CrossFlyCrossFly
Empezar

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 esqueleto MainWindow de 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 — TextArea hace salto de línea; usa TextField para una línea desplazable.

Ver también

¿Te resultó útil esta página?