# Como mostrar um Hint (toast)

> Exibir feedback efêmero não-modal que aparece e some sozinho.

Source: https://crossfly.dev/pt/docs/cookbook/ui/mostrar-um-hint — CrossFly documentation. Full docs as one file: https://crossfly.dev/llms-full.txt

# Como mostrar um Hint (toast)

**Propósito.** Mostrar uma mensagem curta e temporária (estilo "toast") que aparece
sobre a tela, não bloqueia a interação e desaparece sozinha após um tempo. Use para
confirmações rápidas ("Salvo", "Copiado"), avisos leves e status. Substitui o antigo
conceito de `Toast`.

## APIs usadas
- `Hint.show(String message, int delay)` — mostra a toast por `delay` milissegundos, com fade. Método **estático** (não se instancia `Hint`).
- `Hint.show(message, delay, Window parentWindow)` — mesma coisa, ancorada em uma janela específica (default: a janela topo da pilha).
- `Hint.show(message, delay, parentWindow, Relative at, Gap innerGap)` — controle total de posição vertical e padding interno.
- `Hint.show(null, delay)` — passar `message == null` **oculta** a toast atual imediatamente.
- `Hint.INFINITE` — constante `Integer.MAX_VALUE`: mantém visível (com fade-in) até você ocultar manualmente.
- `Hint.INFINITE_NOANIM` — constante `Integer.MIN_VALUE`: mantém visível **sem** animação.

> Configuração global (campos estáticos públicos): `Hint.backColor`, `Hint.foreColor`,
> `Hint.position` (default `Relative.ofScreen(0.85f)`, perto do rodapé), `Hint.fade`,
> `Hint.font`. Alterar esses campos afeta todas as toasts seguintes.

## Exemplo completo (copiar, colar e rodar)
```java
package com.exemplo;

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

/** Tela principal executável. Aponte o launcher (classname) e rode: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());

      // Um botão que dispara a toast ao ser tocado
      Button btn = new Button("Salvar");
      btn.onAction(origin ->
      {
         // Toast simples: aparece por 2 segundos e some com fade
         Hint.show("Registro salvo", 2000);
      });
      add(LAY_FILL, btn);
   }
}
```

> O trecho abaixo mostra **só o miolo**. Para rodar, coloque-o no esqueleto `MainWindow` acima.

## Trecho mínimo
```java
// Toast simples: aparece por 2 segundos e some com fade
Hint.show("Registro salvo", 2000);

// Toast infinita (fica na tela até você mandar sumir)
Hint.show("Sincronizando...", Hint.INFINITE);
// ...quando terminar:
Hint.show(null, 0);   // message == null oculta a toast atual

// Posição no topo, com padding interno customizado
Hint.show("No topo", 1500, null, Relative.START, Gap.ofFont(1f, 0.5f, 1f, 0.5f));
```

> **Nota de verificação (código 2026).** A assinatura real na fonte é
> `Hint.show(String, int)` e sobrecargas — **não** existe um método `hide()`; para
> ocultar, chame `Hint.show(null, ...)`. A toast é renderizada por uma `ToastWindow`
> interna (subclasse de `Window`) mostrada na pilha do `EventsProcessor`, então ela
> aparece sobre a tela atual sem você gerenciar nada.

## Aprofunde-se
- Página do widget: [Hint](/docs/ui/widgets/hint) · Fonte canônica: Capítulo 16
- Diálogos modais irmãos: [Confirmar com Alert](/docs/cookbook/ui/confirmar-com-alert) · [Menu de ações](/docs/cookbook/ui/menu-de-acoes)
