Mega Code Archive

 
Categories / Java by API / Javax Swing Colorchooser
 

Extends AbstractColorChooserPanel

import java.awt.Color; import java.awt.Component; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.Icon; import javax.swing.JColorChooser; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.colorchooser.AbstractColorChooserPanel; import javax.swing.colorchooser.ColorSelectionModel; public class MainClass {   public static void main(String[] a) {     final JColorChooser colorChooser = new JColorChooser();     SystemColorChooserPanel newChooser = new SystemColorChooserPanel();     colorChooser.addChooserPanel(newChooser);     ActionListener okActionListener = new ActionListener() {       public void actionPerformed(ActionEvent actionEvent) {         System.out.println(colorChooser.getColor());       }     };     ActionListener cancelActionListener = new ActionListener() {       public void actionPerformed(ActionEvent actionEvent) {         System.out.println("Cancel");       }     };     final JDialog dialog = JColorChooser.createDialog(null, "Change Button Background", true,         colorChooser, okActionListener, cancelActionListener);     dialog.setVisible(true);   } } class SystemColorChooserPanel extends AbstractColorChooserPanel implements ItemListener {   JComboBox comboBox;   String labels[] = { "BLACK", "BLUE", "CYAN"};   Color colors[] = { Color.BLACK, Color.BLUE, Color.CYAN};   private void setColor(Color newColor) {     int position = findColorPosition(newColor);     comboBox.setSelectedIndex(position);   }   private int findColorLabel(Object label) {     String stringLabel = label.toString();     int position = -1;     for (int i = 0, n = labels.length; i < n; i++) {       if (stringLabel.equals(labels[i])) {         position = i;         break;       }     }     return position;   }   private int findColorPosition(Color color) {     int position = colors.length - 1;     int colorRGB = color.getRGB();     for (int i = 0, n = colors.length; i < n; i++) {       if ((colors[i] != null) && (colorRGB == colors[i].getRGB())) {         position = i;         break;       }     }     return position;   }   public void itemStateChanged(ItemEvent itemEvent) {     int state = itemEvent.getStateChange();     if (state == ItemEvent.SELECTED) {       int position = findColorLabel(itemEvent.getItem());       if ((position != -1) && (position != labels.length - 1)) {         ColorSelectionModel selectionModel = getColorSelectionModel();         selectionModel.setSelectedColor(colors[position]);       }     }   }   public String getDisplayName() {     return "SystemColor";   }   public Icon getSmallDisplayIcon() {     return new MyIcon(Color.BLUE);   }   public Icon getLargeDisplayIcon() {     return new MyIcon(Color.GREEN);   }   protected void buildChooser() {     comboBox = new JComboBox(labels);     comboBox.addItemListener(this);     add(comboBox);   }   public void updateChooser() {     Color color = getColorFromModel();     setColor(color);   } } class MyIcon implements Icon {   Color myColor;   public MyIcon(Color myColor) {     this.myColor = myColor;   }   public int getIconWidth() {     return 16;   }   public int getIconHeight() {     return 16;   }   public void paintIcon(Component c, Graphics g, int x, int y) {     g.setColor(myColor);     g.drawRect(0, 0, 16, 16);   } }