Esta página fue traducida automáticamente del portugués y puede contener errores. La versión en portugués es la canónica.
TimePicker
TimePicker selecciona hora y minuto mediante dos relojes analógicos (horas a la izquierda, minutos a la derecha) con manecillas arrastrables, o mediante una cuadrícula numérica (modo lista). Confirma con tres botones: mañana (AM), tarde (PM) y hora actual. Sigue el patrón de los pickers (ver Picker).
🟡 · Paquete:
dev.crossfly.ui.picker· Extiende:Picker· Estilo:TimePickerStyle
Cuándo usar
- Recolectar un horario (
HH:MM).
Cuándo NO usar
- Recolectar fecha → usa
DatePicker.
Apariencia
Display grande en la parte superior (hh:mm), botón de conmutación reloj/cuadrícula, el área de los relojes (o cuadrícula numérica) y una fila de botones Mañana / Tarde / Actual. Se dimensiona a ~85% de Screen.minSize.
Ejemplo completo (copiar, pegar y ejecutar)
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.picker.*;
/** 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());
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);
}
}
Los fragmentos siguientes muestran solo el núcleo (lo que va dentro de
onShow()). Para ejecutarlos, colócalos en el esqueletoMainWindowde arriba.
Uso básico
TimePicker tp = new TimePicker();
tp.show(answer -> campoHora.setText((String) answer)); // "08:30"
Constructores
| Constructor | Descripción |
|---|---|
TimePicker() |
Sin parámetros; inicia en la hora actual. |
Propiedades y personalización
| Método | Tipo | Qué hace |
|---|---|---|
setTime(int hour, int minute) |
0-23 / 0-59 (clamp) | Predefine la hora. Llámalo antes de show(). |
timeStyle(TimePickerStyle) |
estilo | Estilo personalizado. |
getHour() / getMinute() |
int |
Hora (0-23) / minuto. |
getTimeText() |
String |
HH:MM (24h) con LocaleFormats.timeSeparator. |
Callbacks y eventos
| Callback | Cuándo se dispara |
|---|---|
onSelect(Action) |
al confirmar (recibe el TimePicker). |
show(onAnswer) |
al cerrar, entrega el String HH:MM. |
getAnswer() devuelve siempre 24h HH:MM. Las etiquetas y el separador respetan LocaleFormats.is24Hour/timeSeparator.
Estados
- Modo reloj (
listMode=false) o cuadrícula numérica (listMode=true), alternados por el conmutador. hide()está sobrescrito para detener el temporizador de “hora actual” antes de cerrar.
Predefinir y reaccionar a la selección
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"
Buenas prácticas
- Llama a
setTimeantes deshow()— los ángulos se leen enonShow. - El resultado es siempre 24h; conviértelo a 12h en el display de la app si lo necesitas.
Errores comunes
setTimedespués deshow()— no se refleja en la UI ya construida.- Asumir formato 12h en el
answer— siempre esHH:MM24h.
Ver también
- Guía del área:
ui/· Recetas:cookbook/ - Base del patrón:
Picker - Componentes relacionados:
DatePicker