package tk.amberide.ide.swing.misc; import tk.amberide.Amber; import tk.amberide.ide.os.colorpicker.ColorDialogFactory; import tk.amberide.ide.os.colorpicker.IColorDialog; import java.awt.Color; import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import javax.swing.ImageIcon; import javax.swing.JButton; /** * * @author Tudor */ public class ColorChooserButton extends JButton { private Color selectedColor; public ColorChooserButton() { this(""); } public ColorChooserButton(String text) { super(text); this.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { IColorDialog picker = ColorDialogFactory.newFileDialog(Amber.getUI()); if(picker.show()) { selectedColor = picker.getColor(); setColor(selectedColor); } } }); } public Color getColor() { return selectedColor; } public void setColor(Color col) { selectedColor = col; // Here we create an image with a solid color, and then set it as the icon for our color button. BufferedImage icon = new BufferedImage((int) (getWidth() * .40), (int) (getHeight() * 0.40), BufferedImage.TYPE_INT_ARGB); Graphics2D graphics = icon.createGraphics(); graphics.setPaint(col); graphics.fillRect(0, 0, icon.getWidth(), icon.getHeight()); setIcon(new ImageIcon(icon)); } }