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:ColorMatrixinterna
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 esqueletoMainWindowacima.
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 = choosenColore fecha. - Cancel →
answer = null,choosenColor = -1e fecha (oonAnswernã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ãoint) para não perder a semântica denullno cancelamento.
Erros comuns
- Usar o resultado sem alpha — sai transparente (
0x00RRGGBB). - Esperar
onAnswerno cancelamento — não dispara (answer = null).