JLabel zeigt ImageIcon nicht

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

Java:
 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
 
Wird das Label denn überhaupt angezeigt? Also wenn du Beispielsweise einen String anzeigen lässt:
Java:
this.lbl_coverAusgabe = new JLabel("Test");

Aus deinem Code ist ja nicht zu erkennen, ob das Label überhaupt irgendwo hinzu gefügt wird.
 
vor allem im Unterschied
Java:
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
 
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
 
(aus anderem Thema)
:

kannst du evtl zu mein anderen Thema noch ein Tip geben,
wegen dem ImageIcon,, dass es nicht anzeigt

Java:
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

Java:
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....
 
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
 
Java:
imageNewScale = image.getScaledInstance(150, 150, 150);

was soll denn da die letzte 150???

Java:
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
 
Java:
            // 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!
 
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
 

Zurück
Oben