Technical Support
🟢 Online now
Hello 👋

How can we help you today?
Contact on WhatsApp
B4X Store
jdashboardUI / Entradas y controles / JColorPicker
Entradas y controles

JColorPicker

Selector avanzado HSV con Hue, Alpha, hexadecimal editable y modo flotante

Buscar en toda jdashboardUI
Fuente
jdashboardUI.b4xlib · Solo API pública
Idioma de la tienda: es
Referencia visual — JColorPicker
Referencia basada en la captura y en la estructura real del componente: saturación/brillo, Hue, Alpha, vista previa y hexadecimal.
REFERENCE
JColorPicker con selector HSV, Hue, Alpha y hexadecimal

Qué es JColorPicker

JColorPicker es el selector avanzado de color de jdashboardUI para B4J.

A diferencia de OfficeColorPicker, que trabaja con una paleta discreta estilo Office, JColorPicker permite seleccionar prácticamente cualquier color mediante:

  • área principal de saturación y brillo;
  • barra de tono (Hue);
  • barra de transparencia (Alpha);
  • vista previa circular del color;
  • entrada hexadecimal editable;
  • evento ColorChanged;
  • modo normal o flotante.

Nota del código fuente actual: la clase contiene #ExcludeFromLibrary: true. Esta documentación refleja la implementación real del módulo; su disponibilidad directa desde una distribución compilada depende de cómo se empaquete esa versión.

Cómo funciona

JColorPicker
├── Saturación / brillo
├── Hue
├── Alpha
├── Color seleccionado
└── Hexadecimal

El área grande combina Saturation y Value / Brightness. La barra multicolor cambia el Hue y la barra inferior cambia el Alpha.

Al mover cualquiera de los selectores se recalcula el color y se dispara:

ColorChanged(Clr As Int)

Dependencias

El código real usa principalmente:

  • XUI;
  • JFX;
  • B4XView;
  • B4XCanvas;
  • BitmapCreator;
  • jdashboardUtils.

BitmapCreator genera las superficies de color, Hue y Alpha. jdashboardUtils se utiliza para el campo hexadecimal y algunos ajustes visuales.

Uso desde el Designer

Agrega JColorPicker como Custom View en el Designer.

Supongamos que el control se llama JColorPicker1:

Private Sub JColorPicker1_ColorChanged(Clr As Int)
    pnlPreview.Color = Clr
    Log(Clr)
End Sub

Leer el color seleccionado

SelectedColor está expuesto para lectura:

Dim Clr As Int = JColorPicker1.SelectedColor

Devuelve el color ARGB construido con Hue, Saturation, Value y Alpha.

Establecer un color desde código

Para lectura y escritura usa SelectedColor2:

JColorPicker1.SelectedColor2 = 0xFF5B9BD5
Dim Clr As Int = JColorPicker1.SelectedColor2

Al asignarlo, el control convierte el color a HSV y actualiza Hue, Alpha, el punto de selección, la vista previa y el hexadecimal.

Trabajar con HSV + Alpha

SelectedHSVColor contiene:

H, S, V, Alpha

Ejemplo:

Dim HSV() As Object = Array(200, 0.55, 0.90, 255)
JColorPicker1.SelectedHSVColor = HSV

Leerlo:

Dim HSV() As Object = JColorPicker1.SelectedHSVColor

Log("Hue: " & HSV(0))
Log("Saturation: " & HSV(1))
Log("Value: " & HSV(2))
Log("Alpha: " & HSV(3))

Convertir un color a HSV

Dim HSV() As Object = JColorPicker1.ColorToHSV(0xFF5B9BD5)

El resultado vuelve a ser un array con H, S, V, Alpha.

Campo hexadecimal

El campo inferior acepta:

#RRGGBB
#AARRGGBB

Por ejemplo:

#96C8E5
#FF96C8E5

Cuando el texto tiene un formato válido, JColorPicker convierte el hexadecimal, actualiza HSV y dispara ColorChanged.

Cuando el usuario cambia el color desde la interfaz, el campo hexadecimal también se actualiza automáticamente.

Alpha / transparencia

La barra Alpha trabaja entre:

0   = totalmente transparente
255 = totalmente opaco

La implementación usa un fondo cuadriculado para que la transparencia sea visible.

Modo flotante

Desde el Designer puedes activar:

Floating Mode = True

En este modo el componente crea un contenedor con:

  • título Color Picker;
  • borde redondeado;
  • botón de cerrar;
  • selector debajo de la barra de título.

También se puede activar desde código:

JColorPicker1.Floating = True

Consultar:

Log(JColorPicker1.Floating)

Mostrar y ocultar

Especialmente útil en modo flotante:

JColorPicker1.SetVisible(True)
JColorPicker1.SetVisible(False)

El botón de cerrar del modo flotante oculta mBase.

Crear JColorPicker desde código

JColorPicker incluye AddToParent.

La firma pública es:

AddToParent(Parent As B4XView, _
    l As Int, _
    t As Int, _
    w As Int, _
    h As Int, _
    Colorborder As Int, _
    InitialColor As Int)

Ejemplo:

Private Picker As JColorPicker

Private Sub CreateColorPicker
    Picker.Initialize(Me, "Picker")
    Picker.Floating = False

    Picker.AddToParent( _
        pnlColors, _
        0, _
        0, _
        290dip, _
        360dip, _
        xui.Color_LightGray, _
        0xFF96C8E5)
End Sub

Private Sub Picker_ColorChanged(Clr As Int)
    pnlPreview.Color = Clr
End Sub

Ejemplo flotante

Private FloatingPicker As JColorPicker

Private Sub CreateFloatingPicker
    FloatingPicker.Initialize(Me, "FloatingPicker")
    FloatingPicker.Floating = True

    FloatingPicker.AddToParent( _
        MainForm.RootPane, _
        40dip, _
        40dip, _
        290dip, _
        390dip, _
        xui.Color_LightGray, _
        xui.Color_Blue)

    FloatingPicker.SetVisible(False)
End Sub

Private Sub btnColor_Click
    FloatingPicker.SetVisible(True)
End Sub

Private Sub FloatingPicker_ColorChanged(Clr As Int)
    btnColor.Color = Clr
End Sub

Colores y apariencia

BordersColor

JColorPicker1.BordersColor = xui.Color_Gray

BackgroundColor

JColorPicker1.BackgroundColor = xui.Color_White

TextColor

JColorPicker1.TextColor = xui.Color_DarkGray

Propiedades del Designer

Propiedad Predeterminado Uso
BorderColor 0xFFFFFFFF Color de borde
PanelBackgroundColor 0xFFFFFFFF Fondo del componente
TextAreaTextColor 0xFF000000 Texto del campo hexadecimal
FloatingMode False Activa el contenedor flotante

Evento ColorChanged

Private Sub JColorPicker1_ColorChanged(Clr As Int)
    Log("ARGB: " & Clr)
End Sub

Se dispara al cambiar el color desde el área principal, Hue, Alpha o un hexadecimal válido.

API pública

Método / propiedad Uso
Initialize(Callback, EventName) Inicializa el control
DesignerCreateView(...) Integración con el Designer
AddToParent(...) Creación desde código
SetVisible(Boolean) Muestra / oculta
SelectedColor Color actual, lectura
SelectedColor2 Color actual, lectura y escritura
SelectedHSVColor H, S, V y Alpha
ColorToHSV(Clr) Convierte ARGB a HSV + Alpha
BordersColor Color de borde
BackgroundColor Fondo
TextColor Texto hexadecimal
Floating Activa / consulta modo flotante
mBase Vista base

JColorPicker vs OfficeColorPicker

Característica JColorPicker OfficeColorPicker
Tipo Selector continuo Paleta discreta
Saturación / brillo Sí No
Hue Sí No
Alpha Sí No
Hexadecimal Sí, editable No
Paleta estilo Office No Sí
Colores de tema Selección libre Sí
Modo flotante Sí No
AddToParent Sí Sí
Mejor para Elegir cualquier color Selección rápida

Una combinación muy práctica es usar OfficeColorPicker como selección rápida y abrir JColorPicker desde More Colors....

Patrón recomendado

Private Sub OfficePicker_MoreClick(Clr As Int)
    AdvancedPicker.SelectedColor2 = Clr
    AdvancedPicker.SetVisible(True)
End Sub

Private Sub AdvancedPicker_ColorChanged(Clr As Int)
    CurrentColor = Clr
    UpdatePreview
End Sub