import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JPanel; public class ChangeColourTest extends JPanel { // Main public static void main(String[] args) { JFrame jf = new JFrame("Test"); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setPreferredSize(new Dimension(150, 150)); ChangeColourTest cct = new ChangeColourTest( new Color(0xFFFF0000) ); jf.getContentPane().add(cct, "Center"); jf.pack(); jf.setVisible(true); } // Holders private BufferedImage image; private Color color; // Constructor public ChangeColourTest( Color c ) { // Args color = c; setPreferredSize(new Dimension(150,150)); // Load the image try { image = ImageIO.read(new URL("http://i.imgur.com/Pu6iq.png")); /* A black 'S' on a transparent background. */ } catch (IOException ex) { System.err.println("IOException"); } } // Override paint compoenent @Override public void paintComponent(Graphics g) { Graphics2D g2D = (Graphics2D)g; // Paint the test image to the component and change it's colour // Fill red g2D.setColor(color); g2D.fillRect(0, 0, getSize().width, getSize().height); // Paint with composite g2D.setComposite(AlphaComposite.DstIn); g2D.drawImage( image, 0, 0, image.getWidth(), image.getHeight(), 0, 0, image.getWidth(), image.getHeight(), null); } }