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.

Hint

Hint es la notificación efímera no modal de CrossFly: aparece típicamente cerca de la base de la pantalla, muestra un mensaje corto y desaparece sola tras un tiempo (con fade). No bloquea la interacción con el resto de la UI. Es el sustituto modernizado del antiguo Toast — misma API — y también cubre el caso del antiguo ToolTip (ambos eliminados del framework).

Hint no extiende Window: es una clase utilitaria con API estática que crea internamente una ToastWindow.

🟢 · Paquete: dev.crossfly.ui · Extiende: — (utilitario estático) · Config: campos estáticos

Cuándo usar

  • Feedback pasivo y breve: “¡Guardado!”, “Fallo al conectar”, “Copiado”.
  • Estado transitorio que no exige acción del usuario.

Cuándo NO usar

Apariencia

Cápsula redondeada oscura (por defecto 0xFF303030, texto blanco) centrada horizontalmente, posicionada a ~85% de la altura de la pantalla. Aparece y desaparece con fade suave.

Ejemplo completo (copiar, pegar y ejecutar)

package com.exemplo;

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

/** 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());

      Label titulo = new Label("Toque para ver um Hint");
      add(LAY_AUTO, titulo);

      // Hint es estático: un Button dispara la notificación efímera en onAction
      Button salvar = new Button("Salvar")
         .onAction(c -> Hint.show("Salvo com sucesso!", 2000));
      add(LAY_AUTO, salvar);

      Button falhar = new Button("Simular erro")
         .onAction(c -> Hint.show("Falha ao conectar", 2500));
      add(LAY_AUTO, falhar);
   }
}

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

// Mensaje visible por 2 segundos, luego desaparece solo
Hint.show("Salvo com sucesso!", 2000);

API de visualización (estática)

Sobrecarga Descripción
Hint.show(String message, int delay) Posición/padding por defecto.
Hint.show(String message, int delay, Window parentWindow) Define la ventana padre.
Hint.show(String message, int delay, Window parentWindow, Relative at, Gap innerGap) Forma completa: posición vertical (at) y padding interno (innerGap).

Las dos primeras delegan en la tercera con null en los campos ausentes.

Parámetro Tipo Significado
message String Texto. null oculta el hint actual.
delay int Milisegundos visible. INFINITE/INFINITE_NOANIM lo mantienen en pantalla.
parentWindow Window Padre opcional; por defecto = ventana superior.
at Relative START(arriba) / CENTER / END(base) o valor relativo. null usa position.
innerGap Gap Padding interno. null usa ingap estático.

Configuración global (campos estáticos)

Toda la apariencia se controla mediante estáticos compartidos — alterarlos afecta a todos los hints siguientes.

Campo Tipo Por defecto Qué hace
Hint.backColor int 0xFF303030 Color de fondo.
Hint.foreColor int WHITE Color del texto.
Hint.position Relative Relative.ofScreen(0.85f) Posición vertical por defecto.
Hint.ingap Gap Gap.ofFont(0.7f, 0.35f, 0.7f, 0.35f) Padding interno por defecto.
Hint.font Font Font.get().bold() Fuente del texto.
Hint.fade int 200 Objetivo de alpha en el modo animado.
Hint.INFINITE int Integer.MAX_VALUE Duración infinita con animación.
Hint.INFINITE_NOANIM int Integer.MIN_VALUE Duración infinita sin animación.

Estados

  • Auto-dismiss por tiempo cuando delay es finito.
  • Persistente con INFINITE/INFINITE_NOANIM — debe cerrarse manualmente con Hint.show(null, 0).
  • Los hints no se apilan: uno nuevo sustituye al actual.

Error arriba, en rojo, restaurando el estático

Hint.backColor = 0xFFB00020;
Hint.show("Falha ao salvar", 2500, null, Relative.START, null);
Hint.backColor = 0xFF303030; // restaura el default para los próximos hints

Hint persistente y eliminación manual

Hint.show("Conectando...", Hint.INFINITE);
// ... cuando termine:
Hint.show(null, 0); // message == null oculta el hint actual

Padding personalizado vía Gap

Hint.show("Detalhes copiados", 1800, null, Relative.CENTER, Gap.ofFont(1f, 0.5f, 1f, 0.5f));

Buenas prácticas

  • Úsalo para feedback pasivo y breve; nunca para decisiones.
  • Prefiere pasar at/innerGap en la llamada a mutar los estáticos, para ajustes puntuales.
  • Al mutar un estático globalmente (ej.: backColor), restáuralo después para no filtrar estado.

Errores comunes

  • INFINITE sin cerrar — queda en pantalla para siempre; ciérralo con Hint.show(null, ...).
  • Sin ventana en el tope (pila vacía) — el hint simplemente no aparece.
  • Esperar que los hints se acumulen — no; el nuevo sustituye al anterior.

Migración (Toast/ToolTip eliminados)

Toast.show(...) migra 1:1 a Hint.show(...) (mismas firmas y estáticos). ToolTip no tiene sustituto directo (ya no hay press-and-hold) — usa Hint posicionado con at/position si necesitas una pista efímera.

Ver también

¿Te resultó útil esta página?