Pular para o conteúdo
CrossFly é 100% open sourceSiga no GitHub
CrossFlyCrossFly
Começar

ColorPicker

ColorPicker escolhe uma cor por meio de uma matriz 2-D de matiz×saturação mais um slider de brilho. Segue o padrão dos pickers (ver Picker) e devolve um Integer ARGB sem canal alpha.

🟡 · Pacote: dev.crossfly.ui.picker · Estende: Picker · Seleção: ColorMatrix interna

Quando usar

  • Deixar o usuário escolher uma cor (tema, destaque, etiqueta).

Aparência

Janela em 80%×80% da tela com a matriz matiz×saturação preenchendo o corpo, um slider de brilho, e os botões Cancel e Select (o Select mostra o hex e é pintado com a própria cor escolhida).

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 cor");
      // Usa a própria cor escolhida como fundo do botão
      abrir.onAction(c ->
      {
         ColorPicker cp = new ColorPicker(0xFF3366CC);
         cp.show(answer ->
         {
            int argb = 0xFF000000 | (Integer) answer;  // adiciona alpha (cor sem alpha)
            abrir.style(abrir.getStyle().copy().backColor(argb));
         });
      });
      add(LAY_AUTO, abrir);
   }
}

Os trechos abaixo mostram só o miolo (o que vai dentro de onShow()). Para rodar, coloque-os no esqueleto MainWindow acima.

Uso básico

ColorPicker cp = new ColorPicker(0xFF3366CC);
cp.show(answer ->
{
   int rgb = (Integer) answer;    // 0x00RRGGBB (sem alpha)
   int argb = 0xFF000000 | rgb;   // adicione alpha para usar como cor opaca
   botao.style(botao.getStyle().copy().backColor(argb));
});

Construtores

Construtor Descrição
ColorPicker(int defaultColor) Cor ARGB inicial exibida ao abrir.

Propriedades e personalização

Membro Tipo O que faz
choosenColor int (público) Cor corrente (RGB sem alpha); -1 se cancelado.
ColorPicker.selectStr (estático) String Prefixo do rótulo do botão Select ("Select color ").

Callbacks e eventos

Callback Quando dispara
show(onAnswer) ao confirmar (Select), entrega o Integer (RGB sem alpha).

Resultado (importante)

getAnswer() retorna Integer (cor RGB sem alpha, mascarada com & 0x00FFFFFF), ou null se cancelado. O tipo é Integer (não int) justamente para poder ser null.

⚠️ A cor não tem canal alpha. Aplique 0xFF000000 | se precisar de uma cor opaca.

Estados

  • Select → answer = choosenColor e fecha.
  • Cancel → answer = null, choosenColor = -1 e fecha (o onAnswer não dispara).

Usar a cor escolhida como fundo de um botão

ColorPicker cp = new ColorPicker(0xFF3366CC);
cp.show(answer ->
{
   int argb = 0xFF000000 | (Integer) answer;
   botao.style(botao.getStyle().copy().backColor(argb));
});

Boas práticas

  • Lembre de adicionar alpha (0xFF000000 |) ao usar o resultado como cor opaca.
  • Faça o cast para Integer (não int) para não perder a semântica de null no cancelamento.

Erros comuns

  • Usar o resultado sem alpha — sai transparente (0x00RRGGBB).
  • Esperar onAnswer no cancelamento — não dispara (answer = null).

Veja também

Esta página foi útil?