# JLabel zeigt ImageIcon nicht



## Sebi.Schneider (29. Jan 2013)

Hallo, ich benutze NetBeans und da den GUI Builder, er zeigt mir irgendwie nicht mein ICON an.
Keine Fehlermeldung. Ausgabe sagt, das Image gefunden wurde


```
public void getId3Tags() throws CannotReadException, TagException, ReadOnlyFileException, InvalidAudioFrameException, IOException {

        try {

            File testFile = new File(soundFileString.getPath());

            mp3File = (MP3File) AudioFileIO.read(testFile);
            v2tag = mp3File.getID3v2Tag();
            title = (v2tag.getFirst(ID3v24Frames.FRAME_ID_TITLE));

            
            // Cover auslesen
            artwork = v2tag.getFirstArtwork();
            artwork.createArtworkFromFile(testFile);
            
            try {
                // Cover auf entsprechende Groesse zuschneiden
                image = toImage(artwork.getImage());
                imageNewScale = image.getScaledInstance(150, 150, 150);
                cover = new ImageIcon(imageNewScale);
                System.out.println("Image gefunden!!");
            } catch (Exception e) {
                System.out.print("Kein Artwork vorhanden!\n");
            }
        
        } catch (IOException ex) {
            ex.printStackTrace();
        }

    }
    
    public static Image toImage(BufferedImage bufferedImage) {
        return Toolkit.getDefaultToolkit().createImage(bufferedImage.getSource());
    }
     public ImageIcon getCover() {
        return cover;
    }

Klasse GUI
            test.getId3Tags();

             this.lbl_titelAusgabe.setText(" " + test.getTitle());
           
            
            this.lbl_coverAusgabe = new JLabel(test.getCover());
```

Title liest er einwandfrei


----------



## Dumdidum (29. Jan 2013)

Wird das Label denn überhaupt angezeigt? Also wenn du Beispielsweise einen String anzeigen lässt:

```
this.lbl_coverAusgabe = new JLabel("Test");
```

Aus deinem Code ist ja nicht zu erkennen, ob das Label überhaupt irgendwo hinzu gefügt wird.


----------



## SlaterB (29. Jan 2013)

vor allem im Unterschied

```
this.lbl_titelAusgabe.setText(" " + test.getTitle());
this.lbl_coverAusgabe = new JLabel(test.getCover());
```

lbl_titelAusgabe scheint es schon vorher gegeben zu haben, lbl_coverAusgabe auch?
da kannst du doch genauso per set-Methode das Icon ersetzen,

ein neues JLabel müsste erst mühsam in die GUI an der Stelle des alten eingefügt werden,
nicht unmöglich, aber lieber nicht weiter zu verfolgen


----------



## Sebi.Schneider (29. Jan 2013)

also ich setze die Labels im GuiBuilder.

die titleAusgabe erscheint dadurch problemlos.
Nur bei lbl_coverAusgabe regt sich nichts.

Wenn ich setText mache, ändert er auch den Text nur will ich ja das Icon da haben


----------



## SlaterB (29. Jan 2013)

und was genau spricht nun gegen die präzisen Anweisungen meines vorherigen Postings?


> da kannst du doch genauso per set-Methode das Icon ersetzen,


----------



## Sebi.Schneider (29. Jan 2013)

Sorry,

ja hab ich auch ausprobiert am Anfang schon, nur leider ignoriert er das auch ???:L


----------



## Sebi.Schneider (29. Jan 2013)

Hat es evtl was mit NetBeans zu  tun?


----------



## Dumdidum (30. Jan 2013)

Sebi.Schneider hat gesagt.:


> (aus anderem Thema)
> :
> 
> kannst du evtl zu mein anderen Thema noch ein Tip geben,
> wegen dem ImageIcon,, dass es nicht anzeigt




```
this.lbl_coverAusgabe.setIcon(test.getCover());
```
hatte ja wie du meinst nichts gebracht...

Den Netbeans GUIBuilder hab ich bis jetzt vllt 1-2 mal verwendet. Würde aber bezweifeln, dass der diesbezüglich ne Macke hat 

Aber um wirklich das Problem zu beurteilen hab zumindest ich zu wenig Code gesehen.

Vllt kannste mal alle Stellen Zeigen wo


```
this.lbl_coverAusgabe
```

vorkommt!

Bzw was passiert denn mit dem JLabel? Zeit es garnichts an? Mit meinem Test ob es ein String anzeigt wollte ich heraus finden, ob es überhaupt in der GUI sichtbar ist und du es ned vergessen hast hinzu zu fügen (oder eben den ensprechenden Code der durch den GUI Builder entstanden ist versehentlich gelöscht hast).
Zeigt es denn ein ImageIcon an, wenn du einfach mal irgendein Testbild beim ersten initialisieren hinzufügst?

Vllt ists auch nen Problem mit der size. Aber normal sollte sich das JLabel dann die komplette Größe des ImageIcons nehmen....


----------



## Sebi.Schneider (30. Jan 2013)

also mit dem set.Text("....") funktioniert. Er zeigt mir an, wenn ich auf das Panel klicke.
Da dran liegt es nicht.

Es liegt irgendwie dran, dass er mein ImageIcon nicht erkennt.

Ich hab mal mein ImageIcon ausgegeben: javax.swing.ImageIcon@1d95492
das wird von id3Tag ausgelesen


----------



## Dumdidum (30. Jan 2013)

```
imageNewScale = image.getScaledInstance(150, 150, 150);
```

was soll denn da die letzte 150???


```
imageNewScale = image.getScaledInstance(150, 150, Image.SCALE_SMOOTH);
```

wenn das nicht hilft, dann kann es auch an deinen Bildern bzw der getScaledInstance methode liegen.. die hat scheinbar des öffteren wohl zu Problemen geführt


----------



## Sebi.Schneider (30. Jan 2013)

hmmm leider auch Erfolglos ???:L


Die Bilder sind ja in den einzelnen MP3 Liedern gespeichert.


----------



## Dumdidum (30. Jan 2013)

```
// Cover auslesen
            artwork = v2tag.getFirstArtwork();
            artwork.createArtworkFromFile(testFile);
```

da ist ja die erste zeile auch unnötig, wenn du dann doch von deinem testFile des artwork erstellst.

Hat denn das testFile wirklich ein Cover? bzw gibt er dir denn ""Kein Artwork vorhanden!" aus, wenn du eine mp3 zum testen benutzt die kein Cover hat?

Ich vermute ja irgendwie dass es an den mp3 liegt. Hab aber noch nie mp3's bei Java benutzt.. Um wirklich auszuschließen, dass es an deiner GUI liegt kannste ja auch testweise mal dort wo du das Cover ausließt es in einem zusätzlichen JFrame zu dem du das ImageIcon skaliert oder auch unskaliert in einem JLabel hinzu fügst!


----------



## Sebi.Schneider (30. Jan 2013)

ja stimmt, die erste Zeile ist dann unnötig,

hab mal das Cover entfernt, und er zeigt mir an, dass kein Artwork vorhanden ist.


----------



## mla.rue (4. Feb 2013)

schaumal ob das Label, wenn deine Anwendung läuft, die richtige Grösse hat, um das Bild anzeigen zu können
NetBeans hat die Angewohnheit Komponenten auf 0, 0 zu setzen, wenn man CustomCode verwendet


----------

