ImagIcon Skalierung wirkt sich rückwirkend aus

Status
Nicht offen für weitere Antworten.

purzelbaum_m

Aktives Mitglied
Hallo,

mein Problem besteht darin: Ich habe zwei Applets, die miteinander kommunizieren; d.h. das eine Applet schickt dem anderen einige ImageIcon´s.

Dieses ImageIcon´s (Originalgröße) stecke ich jeweils auf ein JLabel, welches ich in einem Vector packe:
Code:
images.addElement(new JLabel(icon));

anschließend skaliere ich das ImageIcon um es für die Vorschau auf Buttons zu legen...
Code:
    Thumbnail thumb = new Thumbnail();
    thumb.sendThumbnailImage(icon);
    thumb.makeThumbnailImage();
    ImageIcon icon2 = new ImageIcon();
    icon2 = thumb.getThumbnailImage();
    vec.addElement(new JButton(icon2));
    this.getNewLayout();

Meine Klasse Thumbnail:
Code:
import javax.swing.ImageIcon;
import java.awt.Image;

class Thumbnail {
    ImageIcon ii = new ImageIcon();

    public ImageIcon getThumbnailImage(){
        return ii;
    }

    public void sendThumbnailImage(ImageIcon icon){
        ii = icon;
    }

    public void makeThumbnailImage(){
        this.scale(ii);
    }


    private ImageIcon scale(ImageIcon img) {
        img.setImage(img.getImage().getScaledInstance(80, 60,
                Image.SCALE_SMOOTH));
        System.out.println("Skaliere");
        return img;
    }

}

Wenn ich jetzt auf den Button mit dem Thumbnail klicke um mit dem Event ein weiteres Frame aufzumachen, worauf ich das Originalbild in Originalgröße sehen möchte (dabei nehme ich einfach das entsprechende JLabel aus dem Vector) ist dies ebenfalls skalliert worden (also zu klein).
Was kann ich machen, dass mein ImageIcon auf dem JLabel nicht auch skalliert wird, sonder nur jenes das für den JButton ist...
 

Mag1c

Top Contributor
Hi,

du darfst das skalierte Image (getScaledInstance(...)) nicht wieder zurück in das ImageIcon schreiben. Erzeuge dafür einfach ein neues ImageIcon.

Gruß
Mag1c
 

purzelbaum_m

Aktives Mitglied
Vielen Dank, so hat es funktioniert... ich weiß zwar nicht ob das nun von mir so ein megaschöner Stil ist, aber so funktioniert es einwandfrei.

Code:
    public ImageIcon scale(ImageIcon img){
            Image img2 = (Image)img.getImage();
            Image img3 = img2.getScaledInstance(80,60, Image.SCALE_SMOOTH);
            ImageIcon imic = new ImageIcon();
            imic.setImage(img3);
            System.out.println("Skaliere");
            return imic;
    }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Swing DPI-Skalierung und Java 2D unter Java 11 (und Windows 10) AWT, Swing, JavaFX & SWT 2
S JavaFX Node soll auch nach Skalierung zentriert platziert sein AWT, Swing, JavaFX & SWT 3
S JavaFX Image Skalierung in Scrollpane, Scrollpane resized sich nicht AWT, Swing, JavaFX & SWT 5
Ernesto95 JavaFX Absolute Positionierung und Skalierung AWT, Swing, JavaFX & SWT 1
K Automatische Skalierung von GUI Elementen (Java Swing) AWT, Swing, JavaFX & SWT 2
Furtano AWT Skalierung mehrerer Bilder / Histogramme im Fenster AWT, Swing, JavaFX & SWT 4
E Drucken von JPanel mit richtiger Skalierung AWT, Swing, JavaFX & SWT 5
P Problem - Zeichenungsfehler nach Skalierung oder Transformation AWT, Swing, JavaFX & SWT 4
B Komponenten nach Skalierung nicht mehr ansprechbar AWT, Swing, JavaFX & SWT 9
R JFreeChart Skalierung zur Laufzeit ändern AWT, Swing, JavaFX & SWT 7
Luk10 AWT Image und die Skalierung! AWT, Swing, JavaFX & SWT 3
S Bild-Skalierung AWT, Swing, JavaFX & SWT 3
O Skalierung des Center-Bereichs unterbinden AWT, Swing, JavaFX & SWT 2
C Bei Skalierung wird paintComponent() nicht aufgerufen,warum? AWT, Swing, JavaFX & SWT 4
G Performancesteigerung bei Image skalierung AWT, Swing, JavaFX & SWT 3
S SetRGB() wirkt bei Blue nicht AWT, Swing, JavaFX & SWT 6
W GUI mit AWT wirkt "alt". AWT, Swing, JavaFX & SWT 7
T AffineTransform wirkt sich nur auf dem ersten Panel aus AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben