Esta página fue traducida automáticamente del portugués y puede contener errores. La versión en portugués es la canónica.
ColorPicker
ColorPicker elige un color mediante una matriz 2-D de matiz×saturación más un slider de brillo. Sigue el patrón de los pickers (ver Picker) y devuelve un Integer ARGB sin canal alpha.
🟡 · Paquete:
dev.crossfly.ui.picker· Extiende:Picker· Selección:ColorMatrixinterna
Cuándo usar
- Dejar que el usuario elija un color (tema, resaltado, etiqueta).
Apariencia
Ventana al 80%×80% de la pantalla con la matriz matiz×saturación rellenando el cuerpo, un slider de brillo, y los botones Cancel y Select (el Select muestra el hex y se pinta con el propio color elegido).
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 cor");
// Usa el propio color elegido como fondo del botón
abrir.onAction(c ->
{
ColorPicker cp = new ColorPicker(0xFF3366CC);
cp.show(answer ->
{
int argb = 0xFF000000 | (Integer) answer; // agrega alpha (color sin alpha)
abrir.style(abrir.getStyle().copy().backColor(argb));
});
});
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
ColorPicker cp = new ColorPicker(0xFF3366CC);
cp.show(answer ->
{
int rgb = (Integer) answer; // 0x00RRGGBB (sin alpha)
int argb = 0xFF000000 | rgb; // agregue alpha para usar como color opaco
botao.style(botao.getStyle().copy().backColor(argb));
});
Constructores
| Constructor | Descripción |
|---|---|
ColorPicker(int defaultColor) |
Color ARGB inicial mostrado al abrir. |
Propiedades y personalización
| Miembro | Tipo | Qué hace |
|---|---|---|
choosenColor |
int (público) |
Color actual (RGB sin alpha); -1 si se canceló. |
ColorPicker.selectStr (estático) |
String |
Prefijo de la etiqueta del botón Select ("Select color "). |
Callbacks y eventos
| Callback | Cuándo se dispara |
|---|---|
show(onAnswer) |
al confirmar (Select), entrega el Integer (RGB sin alpha). |
Resultado (importante)
getAnswer() devuelve Integer (color RGB sin alpha, enmascarado con & 0x00FFFFFF), o null si se canceló. El tipo es Integer (no int) precisamente para poder ser null.
⚠️ El color no tiene canal alpha. Aplica
0xFF000000 |si necesitas un color opaco.
Estados
- Select →
answer = choosenColory cierra. - Cancel →
answer = null,choosenColor = -1y cierra (elonAnswerno se dispara).
Usar el color elegido como fondo de un botón
ColorPicker cp = new ColorPicker(0xFF3366CC);
cp.show(answer ->
{
int argb = 0xFF000000 | (Integer) answer;
botao.style(botao.getStyle().copy().backColor(argb));
});
Buenas prácticas
- Recuerda añadir alpha (
0xFF000000 |) al usar el resultado como color opaco. - Haz el cast a
Integer(noint) para no perder la semántica denullen la cancelación.
Errores comunes
- Usar el resultado sin alpha — sale transparente (
0x00RRGGBB). - Esperar
onAnsweren la cancelación — no se dispara (answer = null).