Saltar al contenido
CrossFly es 100% open sourceSíguenos en GitHub
CrossFlyCrossFly
Empezar

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: ColorMatrix interna

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 esqueleto MainWindow de 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 = choosenColor y cierra.
  • Cancel → answer = null, choosenColor = -1 y cierra (el onAnswer no 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 (no int) para no perder la semántica de null en la cancelación.

Errores comunes

  • Usar el resultado sin alpha — sale transparente (0x00RRGGBB).
  • Esperar onAnswer en la cancelación — no se dispara (answer = null).

Ver también

¿Te resultó útil esta página?