TimePicker
TimePicker seleciona hora e minuto via dois relógios analógicos (horas à esquerda, minutos à direita) com ponteiros arrastáveis, ou via uma grade numérica (modo lista). Confirma por três botões: manhã (AM), tarde (PM) e hora atual. Segue o padrão dos pickers (ver Picker).
🟡 · Pacote:
dev.crossfly.ui.picker· Estende:Picker· Estilo:TimePickerStyle
Quando usar
- Coletar um horário (
HH:MM).
Quando NÃO usar
- Coletar data → use
DatePicker.
Aparência
Display grande no topo (hh:mm), botão de toggle relógio/grade, a área dos relógios (ou grade numérica) e uma linha de botões Manhã / Tarde / Atual. Dimensiona-se em ~85% de Screen.minSize.
Exemplo completo (copiar, colar e rodar)
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.picker.*;
/** 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());
Button abrir = new Button("Escolher hora");
abrir.onAction(c ->
{
TimePicker tp = new TimePicker().setTime(8, 30);
tp.show(answer -> Hint.show("Hora: " + (String) answer, 2000)); // "08:30"
});
add(LAY_AUTO, abrir);
}
}
Os trechos abaixo mostram só o miolo (o que vai dentro de
onShow()). Para rodar, coloque-os no esqueletoMainWindowacima.
Uso básico
TimePicker tp = new TimePicker();
tp.show(answer -> campoHora.setText((String) answer)); // "08:30"
Construtores
| Construtor | Descrição |
|---|---|
TimePicker() |
Sem parâmetros; inicia na hora atual. |
Propriedades e personalização
| Método | Tipo | O que faz |
|---|---|---|
setTime(int hour, int minute) |
0-23 / 0-59 (clamp) | Pré-define a hora. Chame antes de show(). |
timeStyle(TimePickerStyle) |
estilo | Estilo customizado. |
getHour() / getMinute() |
int |
Hora (0-23) / minuto. |
getTimeText() |
String |
HH:MM (24h) com LocaleFormats.timeSeparator. |
Callbacks e eventos
| Callback | Quando dispara |
|---|---|
onSelect(Action) |
ao confirmar (recebe o TimePicker). |
show(onAnswer) |
ao fechar, entrega a String HH:MM. |
getAnswer() devolve sempre 24h HH:MM. Os rótulos e o separador respeitam LocaleFormats.is24Hour/timeSeparator.
Estados
- Modo relógio (
listMode=false) ou grade numérica (listMode=true), alternados pelo toggle. hide()é sobrescrito para parar o timer de “hora atual” antes de fechar.
Pré-definir e reagir à seleção
TimePicker tp = new TimePicker().setTime(8, 30);
tp.onSelect(p -> Debug.log("Escolhido: " + ((TimePicker) p).getTimeText()));
tp.show(answer -> campoHora.setText((String) answer)); // "08:30"
Boas práticas
- Chame
setTimeantes deshow()— os ângulos são lidos emonShow. - O resultado é sempre 24h; converta para 12h no display do app se precisar.
Erros comuns
setTimedepois deshow()— não reflete na UI já construída.- Assumir formato 12h no
answer— é sempreHH:MM24h.
Veja também
- Guia da área:
ui/· Receitas:cookbook/ - Base do padrão:
Picker - Componentes relacionados:
DatePicker