ColorPicker control JavaFX

El control ColorPicker es utilizado para seleccionar un color, este puede ser establecido usando el ratón, haciendo clic sobre el color deseado, o indicando el color en uno de los formatos admitidos, HSB, RGB, Web, este control es una extensión del ComboBox podemos crear una instancia usando su constructor vacío o la sobre carga que permite establecer el color inicial, veamos como se usa.

Instanciar un ColorPicker

ColorPicker color1 = new ColorPicker();
ColorPicker color2 = new ColorPicker(Color.RED);

La imagen muestra el control y la ventana emergente que se muestra al presionar el botón.

ColorPicker control JavaFX

Podemos seleccionar uno de los colores disponibles, si el color deseado no se encuentra presionamos Personalizar color... esto nos permitirá establecer un color de manera más detallada.

Colores personalizados JavaFX

Usando los botones HSB, RGB, Web que aparecen al lado derecho, podemos cambiar el modo en que especificamos el color, también es posibles cambiar la opacidad o transparencia del color, si es más fácil para nosotros podemos usar el cuadro de la izquierda para seleccionar el color.

Para obtener desde código Java el color indicado en el ColorPicker usaremos el método getValue() de la clase, de modo similar usaremos setValue(Color) para cambiar el color.

También es posible guardar o crear una lista de colores personalizada podemos tener acceso a ella usando el método getCustomColors() este devuelve una colección de colores.

// Agregar dos colores a la lista
color.getCustomColors().addAll(Color.web("#07FF78"), Color.web("#C2F3A7"));

// Obtener la lista de colores
ObservableList<Color> customColors = color.getCustomColors();

Cuando el usuario cambia el color se produce un evento, usaremos el método setOnAction() para agregar un manejador de eventos para el cambio de color en el ColorPicker, por ejemplo, cambiaremos el color de fondo de la aplicación cuando se seleccione un nuevo color.

ColorPicker color = new ColorPicker(Color.RED);

StackPane root = new StackPane();
root.getChildren().add(color);
root.setAlignment(Pos.TOP_LEFT);
root.setPadding(new Insets(10.0));

// Agregar menejador de eventos para el cambio de color
color.setOnAction(e -> {
    BackgroundFill fill = new BackgroundFill(color.getValue(), null, null);
    root.setBackground(new Background(fill));
});

Scene scene = new Scene(root, 600, 250);

primaryStage.setTitle("JavaFX ColorPicker");
primaryStage.setScene(scene);
primaryStage.show();

Cambiar color de fondo con ColorPicker

Finalizamos indicando que un control ColorPicker posee diferentes estilos que podemos aplicar para cambiar la apariencia del mismo, ellos son: STYLE_CLASS_BUTTON y STYLE_CLASS_SPLIT_BUTTON, veamos como se usan:

ColorPicker color = new ColorPicker(Color.RED);
color.getStyleClass().add(ColorPicker.STYLE_CLASS_SPLIT_BUTTON);

ColorPicker control JavaFX

La imagen muestra dos dos estilos mencionados y el estilo usado por defecto.

Descargar código: colorpicker-javafx.zip

Comentarios

Temas relacionados

Entradas populares de este blog

tkinter Grid

Controles y Contenedores JavaFX 8 - I

Conectar SQL Server con Java

tkinter Canvas