JColorChooser proporciona un panel de controles diseñado para permitir que un usuario manipule y seleccione un color. Esta clase proporciona tres niveles de API :
- Un método de conveniencia estático que muestra un cuadro de diálogo selector de color modal y devuelve el color seleccionado por el usuario.
- Un método conveniente estático para crear un cuadro de diálogo de elección de color donde se puede especificar que se invoque a ActionListeners cuando el usuario presiona uno de los botones del cuadro de diálogo.
- La capacidad de crear instancias de paneles JColorChooser directamente (dentro de cualquier contenedor). Se pueden agregar detectores PropertyChange para detectar cuándo cambia la propiedad de «color» actual.
Constructores de la clase:
- JColorChooser(): crea un panel de selección de color con un color inicial de blanco.
- JColorChooser(Color initialColor): crea un panel de selección de color con el color inicial especificado.
- JColorChooser (modelo ColorSelectionModel): crea un panel de selección de color con el ColorSelectionModel especificado .
Métodos comúnmente utilizados:
Método | Descripción |
---|---|
setColor(color color) | Establece el color actual del selector de color en el color especificado. |
establecerColor(int c) | Establece el color actual del selector de color en el color especificado. |
establecerColor(int r, int g, int b) | Establece el color actual del selector de color en el color RGB especificado. |
showDialog(Componente cmp, Título de string, Color init_Color) | Muestra un cuadro de diálogo selector de color modal y bloques hasta que se oculta el cuadro de diálogo. |
actualizar UI() | Notificación del UIManager de que el L&F ha cambiado |
setChooserPanels(AbstractColorChooserPanel[] paneles) | Especifica los paneles de color utilizados para elegir un valor de color. |
addChooserPanel (panel AbstractColorChooserPanel) | Agrega un panel de selector de color al selector de color. |
setUI(ColorChooserUI ui) | Establece el objeto L&F que representa este componente. |
setSelectionModel(ColorSelectionModel nuevoModelo) | Establece el modelo que contiene el color seleccionado. |
setPreviewPanel (vista previa de JComponent) | Establece el panel de vista previa actual. |
Creación de un panel de selección personalizado: el selector de color predeterminado proporciona cinco paneles de selección:
- Muestras: para elegir un color de una colección de muestras.
- HSV: Para elegir un color utilizando la representación de color Tono-Saturación-Valor. Antes de JDK 7, se conocía como HSB, por Tono-Saturación-Brillo.
- HSL: Para elegir un color utilizando la representación de color Tono-Saturación-Luminosidad.
- RGB: Para elegir un color usando el modelo de color Rojo-Verde-Azul.
- CMYK: para elegir un color utilizando el color de proceso o el modelo de cuatro colores.
Los siguientes programas ilustran el uso de la clase JColorChooser:
1. Programa Java para implementar la clase JColorChooser usando ChangeListener: En este programa, primero creamos una etiqueta en la parte superior de la ventana donde se muestra un texto en el que aplicaremos los cambios de color. Establezca el color de primer plano y de fondo. Establezca el tamaño y el tipo de fuente. Cree un Panel y configure su diseño. Ahora configure el selector de color para configurar el color del texto. Usando el método stateChanged() , se genera un evento para cambiar el color del texto usando el método getColor() . Ahora cree la GUI, cree una ventana de configuración. Establezca la operación de cierre predeterminada de la ventana. Cree y configure el panel de contenido y agregue contenido al marco y muestre la ventana.
Java
// Java program to implement JColorChooser // class using ChangeListener import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.colorchooser.*; public class ColorChooserDemo extends JPanel implements ChangeListener { protected JColorChooser Jcc; protected JLabel label; public ColorChooserDemo() { super(new BorderLayout()); // Set up the Label at the top of the window label = new JLabel("Welcome to GeeksforGeeks", JLabel.CENTER); // set the foreground color of the text label.setForeground(Color.green); // set background color of the field label.setBackground(Color.WHITE); label.setOpaque(true); // set font type and size of the text label.setFont(new Font("SansSerif", Font.BOLD, 30)); // set size of the label label.setPreferredSize(new Dimension(100, 65)); // create a Panel and set its layout JPanel bannerPanel = new JPanel(new BorderLayout()); bannerPanel.add(label, BorderLayout.CENTER); bannerPanel.setBorder(BorderFactory.createTitledBorder("Label")); // Set up color chooser for setting text color Jcc = new JColorChooser(label.getForeground()); Jcc.getSelectionModel().addChangeListener(this); Jcc.setBorder(BorderFactory.createTitledBorder( "Choose Text Color")); add(bannerPanel, BorderLayout.CENTER); add(Jcc, BorderLayout.PAGE_END); } public void stateChanged(ChangeEvent e) { Color newColor = Jcc.getColor(); label.setForeground(newColor); } // Create the GUI and show it. For thread safety, // this method should be invoked from the // event-dispatching thread. private static void createAndShowGUI() { // Create and set up the window. JFrame frame = new JFrame("ColorChooserDemo"); // set default close operation of the window. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Create and set up the content pane. JComponent newContentPane = new ColorChooserDemo(); // content panes must be opaque newContentPane.setOpaque(true); // add content pane to the frame frame.setContentPane(newContentPane); // Display the window. frame.pack(); frame.setVisible(true); } // Main Method public static void main(String[] args) { // Schedule a job for the event-dispatching thread: // creating and showing this application's GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }
Producción:
2. Programa Java para implementar la clase JColorChooser usando ActionListener: Cree un botón y un contenedor y configure el Diseño del contenedor. Agregue ActionListener() al botón y agregue un botón al contenedor. ActionListerner() tiene un método actionPerformed() que se implementa tan pronto como se hace clic en el botón. Elija el color y establezca el color de fondo del contenedor.
Java
// Java program to implement JColorChooser // class using ActionListener import java.awt.event.*; import java.awt.*; import javax.swing.*; public class ColorChooserExample extends JFrame implements ActionListener { // create a button JButton b = new JButton("color"); Container c = getContentPane(); // Constructor ColorChooserExample() { // set Layout c.setLayout(new FlowLayout()); // add Listener b.addActionListener(this); // add button to the Container c.add(b); } public void actionPerformed(ActionEvent e) { Color initialcolor = Color.RED; // color chooser Dialog Box Color color = JColorChooser.showDialog(this, "Select a color", initialcolor); // set Background color of the Container c.setBackground(color); } // Main Method public static void main(String[] args) { ColorChooserExample ch = new ColorChooserExample(); ch.setSize(400, 400); ch.setVisible(true); ch.setDefaultCloseOperation(EXIT_ON_CLOSE); } }
Producción:
Nota: Es posible que los programas anteriores no se ejecuten en un IDE en línea. Utilice un compilador fuera de línea.
Referencia: https://docs.oracle.com/javase/7/docs/api/javax/swing/JColorChooser.html