Trotz add wird Image in GradBagLayout nicht angezeigt

youngster

Aktives Mitglied
Ich wollte einfach mal schnell ein Image in mein GridBagLayout einstellen, das war wohl nichts :lol:.
Buttons, Charts geht alles, aber das Bild will nicht erscheinen, hat jemand eine Idee - Danke? :toll:
Java:
ImageIcon imageIcon = new ImageIcon("LOGO.gif");
Image image = imageIcon.getImage();
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 2;
c.gridy = 0;
pane.addImage(imageIcon, c); <-- Zeile 74

Die Fehlermeldung die ich bekomme:
- The method add(String, Component) in the type Container is not applicable for the arguments (ImageIcon, GridBagConstraints)
- Line breakpoint: Dashboard [line: 74] - main(String[])
 
Du kannst ein ImageIcon nicht direkt auf einen Container packen (is not applicable for the arguments), packs in ein JLabel und adde das.
 
danke das wars. Zur dokumentation für andere hier noch die funktionierende Variante.
Java:
		Icon icon = new ImageIcon("LOGO.gif");
		JLabel label = new JLabel(icon);
		c.fill = GridBagConstraints.HORIZONTAL;
		c.gridx = 2;
		c.gridy = 0;
		pane.add(label, c);
Bilddatei muss in dem Ordner des Projects sein.
 
Jetzt muss ich leider doch noch einmal nachhaken - Folgefrage aus dem ursprünglichem Problem. Mein Bild ist nun zugross und ich habe folgendes (ohne Erfolg) probiert:

Java:
Icon icon = new ImageIcon("LOGO.gif");
JLabel label = new JLabel(scale(icon, 0.75));
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 3;
c.gridy = 0;
pane.add(label, c);

Für die Skalierung:
Java:
    private ImageIcon scale(Image src, double scale) {
        int w = (int)(scale*src.getWidth(this));
        int h = (int)(scale*src.getHeight(this));
        int type = BufferedImage.TYPE_INT_RGB;
        BufferedImage dst = new BufferedImage(w, h, type);
        Graphics2D g2 = dst.createGraphics();
        g2.drawImage(src, 0, 0, w, h, this);
        g2.dispose();
        return new ImageIcon(dst);
    }
Ich habe nun den Konflikt, scale ist ein Image, und ich versuche ein Icon zu skalieren. Ich kann aber Icon nicht auf Image ändern, da ich es ansonsten nicht mehr in das GridBagLayout/JLabel einfügren kann. Ich kann scale nicht auf Icon ändern, da dann getWidth, getHeight nicht angewendet werden kann. :noe:
Dann muss ich zwar immer noch mit der Skalierung rumspielen, aber das ist i.O.
 
Ich habe nach bestimmt 15 unterschiedlichen Begriffen und Kombination gesucht - auf Englisch; dabei war die Lösung direkt vor der Tür. Vielen Dank. :toll:
 

Neue Themen


Zurück
Oben