2017-11-06 2 views
1

Ich muss programmatisch eine ImageIcon mit einer einfachen Farbe erstellen (lassen Sie uns blau sagen):Swing - neue ImageIcon von Farbe

Blue square

Also begann ich dies zu tun:

ImageIcon imageIcon = new ImageIcon(); 

I Now versuche, meine ImageIcon mit einer blauen Farbe zu füllen.

+0

Ich denke, dies könnte für [Wie man ein ImageIcon tönt] als doppelt markiert werden (https://stackoverflow.com/questions/30444232/how-to-tint-an-imageicon) –

Antwort

2

Dies sollte den Trick tun. Sorry, wenn es irgendwelche Tippfehler gibt, habe ich keine Java-IDE auf diesem Rechner.

BufferedImage bImg = new new BufferedImage(60, 60, BufferedImage.TYPE_INT_RGB); 
Graphics2D graphics = bImg.createGraphics(); 

graphics.setPaint(new Color(0, 0, 128)); 
graphics.fillRect(0, 0, bImg.getWidth(), bImg.getHeight()); 

ImageIcon imageIcon = new ImageIcon(bImg); 
1

Hier ist ein Beispiel

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Graphics; 
import java.awt.image.BufferedImage; 

import javax.swing.Icon; 
import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.WindowConstants; 

public class CreateImage { 

    public static void main(String[] args) { 
     JFrame frm = new JFrame("Test"); 
     frm.add(new JLabel(createImage(Color.BLUE, new Dimension(200, 100)))); 
     frm.pack(); 
     frm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
     frm.setLocationRelativeTo(null); 
     frm.setVisible(true); 
    } 

    public static Icon createImage(Color c, Dimension size) { 
     BufferedImage img = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_ARGB); 
     Graphics g = img.createGraphics(); 
     g.setColor(c); 
     g.fillRect(0, 0, size.width, size.height); 
     return new ImageIcon(img); 
    } 
} 
1

Basierend auf der Antwort von Lonely Neuronen ist, habe ich eine Methode ein neues ImageIcon mit der gewünschten Größe und Farbe zu erzeugen:

public static ImageIcon createImageIcon(Color color, int width, int height) { 
     BufferedImage image = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB); 
     Graphics2D graphics = image.createGraphics(); 
     graphics.setPaint(Color.WHITE); 
     graphics.fillRect (0, 0, width, height); 
     return new ImageIcon(image); 
    }