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
- Algo que exige decisión/confirmación → usa
AlertoActionSheet.
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 esqueletoMainWindowde 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
delayes finito. - Persistente con
INFINITE/INFINITE_NOANIM— debe cerrarse manualmente conHint.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/innerGapen 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
INFINITEsin cerrar — queda en pantalla para siempre; ciérralo conHint.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
- Guía del área:
ui/· Recetas:cookbook/ - Componentes relacionados:
Alert·ActionSheet