Wie kann man ein ImageIcon skalieren?

Die Klasse ImageIcon bietet keine Methode zur Skalierung an. Um dennoch eine solche Größenänderung durchzuführen, muss ein kleiner Umweg über die Klasse Image genommen werden.

Die Klasse ImageIcon stellt die Methoden setImage() und getImage() bereit, die eine Image-Instanz an das ImageIcon übergeben, bzw. eine solche zurück geben. Die Klasse Image liefert die Methode getScaledInstance(), die eine skalierte Version des übergebenen Image-Objektes erstellt.

import java.awt.Image;
import javax.swing.ImageIcon;

public class ImageIconSkalierenClass { 
    public static void main(String[] args){
        ImageIcon ico = new ImageIcon("/home/webs/bild.jpg");
        ico.setImage(ico.getImage().getScaledInstance(100,100,Image.SCALE_DEFAULT));
    }
}

Im Beispiel wird somit eine Image-Instanz des Ausgangs-ImageIcon erzeugt, dieses skaliert und schließlich wieder dem ImageIcon-Objekt übergeben. Neben Breite und Höhe wird getScaledInstance() noch ein dritter Parameter übergeben. Dieser bestimmt den Algorithmus der Skalierung und bestimmt somit besonders die Priorität zwischen Skalierungs-Tempo und 'smoothness'