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.

6. Manejando la entrada

Lo que vas a aprender: reaccionar a toques, teclas y gestos, y leer la entrada de texto. Prerrequisitos: Estilos y temas.

Ejemplo completo (copiar, pegar y ejecutar)

Formulario de agregar tarea: campo + botón con validación, lectura del texto al enviar y feedback con Hint. Agrega las tareas a un Label de salida. Compila tal cual.

package com.exemplo;

import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;

public class MainWindow extends Window
{
   private final TextField campo = new TextField().caption("Nova tarefa");
   private final Label saida = new Label("Nenhuma tarefa ainda");

   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());

      add(LAY_AUTO, campo);

      Button add = new Button("Adicionar");
      add.onAction(c -> {                                 // corre en el paint thread
         String texto = campo.getText().trim();
         if (texto.isEmpty()) { Hint.show("Digite algo", 2000); return; }   // validación (2 args)
         adicionarTarefa(texto);
         campo.clearText();
      });
      add(LAY_AUTO, add);

      add(LAY_AUTO, saida);
   }

   private void adicionarTarefa(String texto)
   {
      saida.setText("Adicionada: " + texto);
      saida.repaint();
   }
}

Los fragmentos de abajo muestran solo el núcleo (lo que va dentro de onShow()). Para ejecutar, colócalos en el esqueleto MainWindow de arriba.

onAction vs onActionThread

botao.onAction(c -> salvar());          // corre en el paint thread (rápido, toca la UI)
botao.onActionThread(c -> {             // corre en hilo de fondo (trabajo pesado)
   var dados = baixar();
   c.onUI(() -> mostrar(dados));         // vuelve a la UI
});

Entrada de texto — lee al enviar

No hay evento por tecla: lee getText() cuando lo necesites (ej.: en el botón).

TextField campo = new TextField().caption("Nova tarefa");
Button add = new Button("Adicionar");
add.onAction(c -> {
   String texto = campo.getText().trim();
   if (texto.isEmpty()) { Hint.show("Digite algo", 2000); return; }   // validación
   adicionarTarefa(texto);
   campo.clearText();
});

Foco: sobrescribe onFocus()/onBlur() en una subclase cuando necesites reaccionar a la ganancia/pérdida de foco.

Gestos de toque (sobrescribibles)

En un componente custom, sobrescribe los handlers para gestos:

@Override public void onLongTouch(float x, float y) throws Exception { abrirDetalhe(); }
// también: onTouchDown/onTouchUp/onPan

Las excepciones en callbacks van a Debug.handle (no borbotean para derribar el frame).

Construyes en este paso

El formulario de agregar tarea (campo + botón + validación) y el gesto de abrir el detalle.

Recapitulando

onAction (UI) / onActionThread (fondo); lee texto con getText() al enviar; gestos por handlers sobrescribibles; los errores van a Debug.handle.

Próximos pasos

→ Gestionando el estado

Ver también

¿Te resultó útil esta página?