/*
* Created on 29.12.2004@16:16:52
*
* TODO Licence info
*/
package de.tutorials;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GraphicsEnvironment;
import java.awt.Point;
import java.awt.Transparency;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
* @author Administrator
*
* TODO Explain what I do...
*/
public class JColorChooserExample extends JFrame {
private JButton btnColor;
private JLabel lblImage, lblColorReplacement, lblColor;
private BufferedImage bufImg;
private int w, h;
private int replaceColorRGB = -1;
public JColorChooserExample() {
super("JColorChooserExample");
setDefaultCloseOperation(EXIT_ON_CLOSE);
btnColor = new JButton("Choose a color");
btnColor.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Color c = JColorChooser.showDialog(JColorChooserExample.this,
"Choose your color", Color.WHITE);
System.out.println(c);
if (replaceColorRGB == -1)
return;
int colorRGB = c.getRGB();
for (int x = 0; x < w; x++) {
for (int y = 0; y < h; y++) {
int rgb = bufImg.getRGB(x, y);
if (rgb == replaceColorRGB) {
bufImg.setRGB(x, y, colorRGB);
}
}
}
}
});
try {
BufferedImage bImg = ImageIO.read(new File("c:/test.jpg"));
w = bImg.getWidth();
h = bImg.getHeight();
//Kleiner Trick um ein Hardware Beschleunigtes BufferedImage zu bekommen...
bufImg = GraphicsEnvironment.getLocalGraphicsEnvironment()
.getDefaultScreenDevice().getDefaultConfiguration()
.createCompatibleImage(w, h, Transparency.BITMASK);
bufImg.getGraphics().drawImage(bImg, 0, 0,
JColorChooserExample.this);
} catch (IOException e1) {
e1.printStackTrace();
}
lblImage = new JLabel(new ImageIcon(bufImg));
lblImage.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent evt) {
Point p = evt.getPoint();
replaceColorRGB = bufImg.getRGB(p.x, p.y);
Color c = new Color(replaceColorRGB);
lblColor.setForeground(c);
}
});
lblColorReplacement = new JLabel("Replace color:");
lblColor = new JLabel("COLOR");
// lblColor.setPreferredSize(new Dimension(45, 45));
JPanel panel = new JPanel();
panel.add(lblColorReplacement, BorderLayout.WEST);
panel.add(lblColor, BorderLayout.EAST);
add(lblImage, BorderLayout.NORTH);
add(panel, BorderLayout.CENTER);
add(btnColor, BorderLayout.SOUTH);
pack();
setVisible(true);
}
public static void main(String[] args) {
new JColorChooserExample();
}
}