Kein Bild wird angezeigt bei ImageIcon

PetBe

Mitglied
Hi Leute,

ich will ein Bild (im PNG-Format) meiner GUI hinzufügen. Ich habe folgenden Code:
"JLabel pictureLabel1 = new JLabel (new ImageIcon ("Bild 1.PNG"));
...
panel.add(pictureLabel1, "right"); "

Ich benutze das MigLayout und das Bild "Bild 1.PNG" ist im selben Verzeichnis wie die class.-Datei. Jedoch wird das Bild nicht angezeigt. Ich habe schon viel rumgespielt aber bekommen es einfach nicht hin. Hat jemand eine Idee?
 

Robat

Top Contributor
Wenn es im selben Verzeichnis wie die .class - Dateien liegt liegt musst du natürlich auch den entsprechenden Pfad angeben.
Gibt es einen Grund seine Bilder dort abzulegen und nicht in einem Unterverzeichnis des src-Folders?
 

PetBe

Mitglied
Hi,

ich habe verschiedene Sachen ausprobiert. Leider hat wirklich nichts funktioniert. Z.B.

Bild liegt im selben Verzeichnis wie die class.Datei:
JLabel pictureLabel1 = new JLabel (new ImageIcon ("bin/game/Bild 1.PNG"));

So wie Robat es empfohlen hat: Bild liegt im Unterverzeicznis pictures des src-Folders
JLabel pictureLabel1 = new JLabel (new ImageIcon ("src/pictures/Bild 1.PNG"));

Bild liegt in einem Unterverzeichnis des class-Datei Ordners mit dem Namen "Bilder"
JLabel pictureLabel1 = new JLabel (new ImageIcon ("bin/game/Bilder/Bild 1.PNG"));
ODER
JLabel pictureLabel1 = new JLabel (new ImageIcon ("Bilder/Bild 1.PNG"));

Vollständige Pfadangabe
JLabel pictureLabel1 = new JLabel (new ImageIcon ("C:/Benutzer/T.D/workspace/Games/src/pictures/Bild 1.PNG"));
(Bzw. hier habe ich es auch mit den anderen Foldern ausprobiert)

Leider wurde das Bild nie angezeigt. Vlt. liegt es ja daran, dass ich irgendwo einen Fehler habe bei der Konzipierung der GUI (alles andere funktioniert aber einwandfrei, nur das mit den Bilder leider nicht).
 

DaCrazyJavaExpert

Bekanntes Mitglied
Liegt das Bild, beziehungsweise das Verzeichnis "Bilder" im src Ordner? Ich mache es immer so, dass ich ein extra Ordner(images) für die Bilder habe. Dieser Ordner liegt sozusagen parallel zum src Ordner, was bedeutet, dass ich einfach nur "images/bild.png" schreiben muss. Falls du den Konkreten Pfad angibst,
C:/Benutzer/T.D/workspace/Games/src/pictures/Bild 1.PNG
\\ statt /. Keine Ahnung obs n Untersied mach, aber so mache ich es immer.
 

Meniskusschaden

Top Contributor
Versuche doch mal, das Icon so zu laden:
Java:
ImageIcon icon = new ImageIcon(getClass().getResource("/icons/icon.png"));
Das Verzeichnis "icons" muß dabei in demselben Ordner liegen wie die Klasse, in der sich der Code befindet.
Außerdem würde ich sicherheitshalber prüfen, ob das Icon wirklich nicht geladen wurde. Kann ja theoretisch sein, dass das Laden zwar funktioniert hat, das Bild aber aus einem anderen Grund nicht angezeigt wird.
\\ statt /. Keine Ahnung obs n Untersied mach, aber so mache ich es immer.
Ich würde beim normalen Schrägstrich "/" bleiben. Das müsste unter allen Plattformen funktionieren.
 

PetBe

Mitglied
Hi Leute,
irgendwie ist bei mir der Wurm drin :-( . Ich habe das was in den beiden oberen Posts vorgeschlagen wurde probiert jedoch weiterhin ohne Erfolg (ich kann mich erinnern, dass ich früher schon mit dem ImageIcons zu tun hatte und dort überhaupt keine Probleme hatte). Also ich habe mal 3 Varianten ausprobiert und dazu Screenshots der Ordnerstruktur hochgeladen.

Außerdem ist hier der gesamte Code (mit den zugehörigen 3 Varianten). Ich denke, dass ich irgendwo im Code einen Fehler habe.

Java:
package game;

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import net.miginfocom.swing.MigLayout;

public class EinarmigerBandit extends JFrame {
   
    Container c;
   
    JButton startButton = new JButton("Spiel starten!");
    JButton stopButton1 = new JButton("STOP");
    JButton stopButton2 = new JButton("STOP");
    JButton stopButton3 = new JButton("STOP");
   
   
   
      JLabel pictureLabel1 = new JLabel (new ImageIcon ("/pictures/Bild 1.PNG")); //1 Variante) Ordner mit der .java-Datei
      // JLabel pictureLabel1 = new JLabel (new ImageIcon ("/Bilder/Bild 1.PNG"));//2 Variante) Ordner mit der .classDatei
    //   JLabel pictureLabel1 = new JLabel (new ImageIcon ("images/Bild 1.PNG")); //3 Variante) Ordner parallel zum src Ordner
    
   
   
   

   
    public EinarmigerBandit () {
       
        c = getContentPane();

        c.setLayout(new BorderLayout());
       
        //startButton.setEnabled(false);

       
        MigLayout miglayout = new MigLayout();
        JPanel panel = new JPanel(miglayout);
       
        panel.add(startButton,          "width 120px, height 50px, x 225, y 20");

        panel.add(stopButton1,          "width 120px, height 50px, x 60, y 250");
        panel.add(stopButton2,          "widt1h 120px, height 50px, x 240, y 250");
        panel.add(stopButton3,          "width 120px, height 50px, x 420, y 250");
       
        panel.add(pictureLabel1, "width 120px, height 50px, x 320, y 250");
       
       
        c.add(panel);
    }
   
   
   
   
   
   
   
   
   
    public static void main(String[] args) {

        EinarmigerBandit frame = new EinarmigerBandit();
        frame.setTitle("Einarmiger Bandit");
        frame.setSize(615, 450);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        System.out.println(ClassLoader.getSystemResource("Bild 1.PNG"));

    }


}

Vielleicht kann mir jemand auf die Sprünge helfen?
 

Anhänge

  • Variante 1 - 1.PNG
    Variante 1 - 1.PNG
    45,6 KB · Aufrufe: 48
  • Variante 1 - 2.PNG
    Variante 1 - 2.PNG
    63,7 KB · Aufrufe: 29
  • Variante 2.PNG
    Variante 2.PNG
    59,8 KB · Aufrufe: 39
  • Variante 3.PNG
    Variante 3.PNG
    49,7 KB · Aufrufe: 36

Meniskusschaden

Top Contributor
Ich habe das was in den beiden oberen Posts vorgeschlagen wurde probiert
Ich weiß jetzt nicht, welche Posts du meinst. Meinen offenbar nicht, denn damit funktioniert es:
Java:
JLabel pictureLabel1 = new JLabel(new ImageIcon(getClass().getResource("/pictures/Bild 1.PNG")));
im Anhang ist ein Screenshot der Projektstruktur.
 

Anhänge

  • Struktur.png
    Struktur.png
    4,8 KB · Aufrufe: 39

PetBe

Mitglied
Ich habe folgende Instruktion von "Meniskusschaden" ausprobiert:
Code:
ImageIcon icon = new ImageIcon(getClass().getResource("/pictures/Bild 1.PNG"));
    JLabel pictureLabel1 = new JLabel (icon);

Und der Ordner "pictures" ist im selben Verzeichnis wie die .java-Datei (siehe Anhang). Leider funktioniert es nicht. Das Bild wird einfach nicht angezeigt.
 

Anhänge

  • Projektstruktur.PNG
    Projektstruktur.PNG
    7,5 KB · Aufrufe: 41

DaCrazyJavaExpert

Bekanntes Mitglied
So nicht ganz richtig. Mit absoluten Pfaden (wie C:/images/bild1.png) klappt es nur auf deinem PC ;) (außer es gibt den Pfad zufälliger Weise auch auf anderen Rechnern )
Dieses Bild ist doch im programm integriert genauso wie der Ordner, indem das Bild liegt. Der Bildordner liegt parallel zum src ordner. Ich dachte der Pfad würde somit überrall funktionieren, aber ich lasse mich gerne eines anderes belehren.
 

DaCrazyJavaExpert

Bekanntes Mitglied
Ich habe folgende Instruktion von "Meniskusschaden" ausprobiert:
Code:
ImageIcon icon = new ImageIcon(getClass().getResource("/pictures/Bild 1.PNG"));
    JLabel pictureLabel1 = new JLabel (icon);

Und der Ordner "pictures" ist im selben Verzeichnis wie die .java-Datei (siehe Anhang). Leider funktioniert es nicht. Das Bild wird einfach nicht angezeigt.
Du hast da dieses Ausrufezeichen, am Projekt. Ich weiß, muss ich sagen, nicht was es bedeutet. Aber bei mir funktioniert in solchen Fällen das Programm nicht. Sa schreibe ich es einfach in einem neuen Projekt neu, oder bessergesagt ich kopiere die Klassen etc. in das neue Projekt.
 

Meniskusschaden

Top Contributor
Und der Ordner "pictures" ist im selben Verzeichnis wie die .java-Datei (siehe Anhang). Leider funktioniert es nicht. Das Bild wird einfach nicht angezeigt.
Ich habe es mit derselben Struktur wie in deinem letzten Screenshot getestet. Mit deinem ursprünglichen Code (inklusive deiner letzten Anpassung gemäß meinem Vorschlag) hat es funktioniert. Vielleicht hat es auch etwas mit dem Bild zu tun, dass du anzeigen willst. Ich habe nur ein 32x32 Pixel großes Icon benutzt (grüner Pfeil). Im Anhang ist das Ergebnis zu sehen.
 

Anhänge

  • EinarmigerBandit.png
    EinarmigerBandit.png
    7,2 KB · Aufrufe: 28

PetBe

Mitglied
Du hast da dieses Ausrufezeichen, am Projekt. Ich weiß, muss ich sagen, nicht was es bedeutet. Aber bei mir funktioniert in solchen Fällen das Programm nicht. Sa schreibe ich es einfach in einem neuen Projekt neu, oder bessergesagt ich kopiere die Klassen etc. in das neue Projekt.
Ja, das war das Problem. Die miglayout library war irgendwie nicht richtig angebunden. Ich habe sie entfernt und nochmals eingebunden und jetzt funktioniert das. :)

Das mit dem Java Build Path ist aber allgemein ein Verständnisproblem von mir. Damit habe ich leider immer wieder Probleme, da ich - und da bin ich ehrlich - es einfach nie wirklich verstanden habe, wie und was ich das alles spezifizieren muss
 

ExceptionOfExpectation

Aktives Mitglied
ich habe auch dasselbe Problem, aber ich verwende noch keine Eclipse:
[CODE lang="java" title="TestApp" highlight="24"]package lection4;

import javax.swing.*;
import java.awt.*;
import java.nio.file.Paths;
import java.net.URI;

public class TestApp extends JFrame{

ImageIcon icon;
JLabel lab;
JPanel panel;
Container contentPane;

TestApp(){
setSize(400,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//URI uri = Paths.get(ClassLoader.getSystemResource("D:/java_variable/Swing-Buttons").toURI());
setVisible(true);
contentPane = this.getContentPane();
panel = new JPanel();
panel.setLayout(new BorderLayout());

icon = new ImageIcon("/icons/Add16.gif");
lab = new JLabel(icon);
panel.add(BorderLayout.CENTER, lab);
contentPane.add(BorderLayout.CENTER, panel);
}

public static void main(String[] args){ new TestApp(); }

}[/CODE]

der Ordner und Icon.png sind vorhanden, alles im Container eingefügt, wird aber in der Anwendung nicht angezeigt. Habe ich da was übersehen?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N imageIcon zeigt kein Bild an AWT, Swing, JavaFX & SWT 5
cool_brivk24 Swing ImageIcon lädt kein Bild AWT, Swing, JavaFX & SWT 12
P kein Scrollen nach affinertransformation bei mouse dragged AWT, Swing, JavaFX & SWT 2
Fridolin111 Der KeyListener Löst kein event aus AWT, Swing, JavaFX & SWT 6
F Kein JavaFX mehr im Eclipse Wizard AWT, Swing, JavaFX & SWT 1
S Swing Bei start des Programmes kein Fenster zu sehen AWT, Swing, JavaFX & SWT 1
L JavaFX TableView kein content text ändern AWT, Swing, JavaFX & SWT 2
L JavaFX Anderer Text, wenn kein Platz ist. AWT, Swing, JavaFX & SWT 1
C JavaFX ProGuard -> TableView kein Inhalt AWT, Swing, JavaFX & SWT 7
B JavaFX Text wird nicht angezeigt, kein Fehler AWT, Swing, JavaFX & SWT 2
D Kein Icon beim JTabbedPane AWT, Swing, JavaFX & SWT 1
krgewb Kein src-Verzeichnis AWT, Swing, JavaFX & SWT 1
A Swing CardLayout - kein Wechsel möglich AWT, Swing, JavaFX & SWT 5
Wurstkopp JavaFX JavaFX KeyEvent kein Zahlencode um unbekannte Mediatasten auszuwerten? AWT, Swing, JavaFX & SWT 0
Nabbit Über JList kein JPopupMenu AWT, Swing, JavaFX & SWT 2
S Kein JFrame unter Mac? AWT, Swing, JavaFX & SWT 8
F Gui weicht von Designpreview ab (kein fensterrahmen, andere größe) AWT, Swing, JavaFX & SWT 13
Z AWT JLabel setzt kein neuen Text AWT, Swing, JavaFX & SWT 6
Seikuassi Swing JTextField nimmt kein Einfügen (Strg+V) an AWT, Swing, JavaFX & SWT 4
T JavaFX ControlsFX-Notification öffnet nicht wenn kein JavaFX-Fenster offen. AWT, Swing, JavaFX & SWT 1
M Kein Zeichnen der Figuren auf JPanel AWT, Swing, JavaFX & SWT 4
P Event Handling Anfängerfrage: ActionEvent bekommt kein Zugriff auf Objekt AWT, Swing, JavaFX & SWT 3
S Kein DnD in allen Java Applikationen AWT, Swing, JavaFX & SWT 5
D Event Handling "Plötzlich" kein mouseMoved-Event AWT, Swing, JavaFX & SWT 2
R Bitte kein Menü bei F10 AWT, Swing, JavaFX & SWT 9
M Kein resize nach Component.setVisible() AWT, Swing, JavaFX & SWT 2
T AWT Graphics G Kein Text erscheint warum? AWT, Swing, JavaFX & SWT 12
C AWT Fokus von Component entfernen, wenn kein anderes vorhanden AWT, Swing, JavaFX & SWT 4
M Swing JMenu verdeckt durch Komponente (aber kein AWT und Swing mix!?) AWT, Swing, JavaFX & SWT 3
P EDT Problem? Kein Aufruf der repaint Methode AWT, Swing, JavaFX & SWT 6
H TextArea zeigt kein Text an AWT, Swing, JavaFX & SWT 6
Y Kein GantChart in einem GridLayout AWT, Swing, JavaFX & SWT 5
D Event in Fenster ausgeben + Observer + kein Plan AWT, Swing, JavaFX & SWT 2
D JTable während edit kein update machen lassen AWT, Swing, JavaFX & SWT 2
M Swing Kein update bei simulierten HTML-Link AWT, Swing, JavaFX & SWT 4
S JTable erlaubt kein Komma um Dezimazahlen einzugeben..? AWT, Swing, JavaFX & SWT 2
S Swing jTextPaine kein Zeilenumbruch nach setText() AWT, Swing, JavaFX & SWT 9
hdi Swing EDT macht kein repaint() AWT, Swing, JavaFX & SWT 2
T Editable ComboBox / kein Weiterspringen AWT, Swing, JavaFX & SWT 12
Spin Innere Klasse : kein static? AWT, Swing, JavaFX & SWT 8
G jpanel macht kein repaint AWT, Swing, JavaFX & SWT 2
V Kein Fokus für Key Bindings auf JPanel bzw JApplet AWT, Swing, JavaFX & SWT 2
G CellEditor - Kein "Textfeld" AWT, Swing, JavaFX & SWT 6
N JCalendar - Kein Datum auswählen AWT, Swing, JavaFX & SWT 3
E Hat Netbeans unter Linux kein Designer für Swing? AWT, Swing, JavaFX & SWT 3
@ JPanel: kein paintComponent() trotz repaint() AWT, Swing, JavaFX & SWT 4
W Kein MouseKlick-Event bei Bewegung AWT, Swing, JavaFX & SWT 2
B Finde kein PrintService der das Attribut PageRanges annimmt AWT, Swing, JavaFX & SWT 22
B [JTable] kein Sortieren der versteckten Columns AWT, Swing, JavaFX & SWT 9
B kein MouseEvent bei zu schneller Bewegung der Maus AWT, Swing, JavaFX & SWT 7
N Threads kein neues Fenster erzeugen lassen AWT, Swing, JavaFX & SWT 4
A Komponente entfernen. Kein neuzeichnen nach validate() AWT, Swing, JavaFX & SWT 2
technolion FileDialog/keine Multi-Selektion vs. JFileCHooser/kein LaF AWT, Swing, JavaFX & SWT 2
G Leider trotz allem kein Icon :( Brauche Hilfe AWT, Swing, JavaFX & SWT 3
M Problem mit verschachtelten Events und kein ausweg in sicht AWT, Swing, JavaFX & SWT 3
Z kriege kein paint AWT, Swing, JavaFX & SWT 13
B Kein Repaint während eines Prozesses. AWT, Swing, JavaFX & SWT 5
O JScrollPane beinhaltet JPanel mit null Layout kein Scrollen AWT, Swing, JavaFX & SWT 3
K jTable - kein repaint? AWT, Swing, JavaFX & SWT 9
D JDialog: kein Icon nach setResizeable(false) AWT, Swing, JavaFX & SWT 5
K Kein Header in JTable ! AWT, Swing, JavaFX & SWT 8
S Mouselistener erzeugt kein Event in einem Menuitem AWT, Swing, JavaFX & SWT 2
J Tabelle zeigt kein Header AWT, Swing, JavaFX & SWT 5
A Ich kann kein JInternalFrame anzeigen ! AWT, Swing, JavaFX & SWT 7
G für showInputDialog kein eigenes Icon auswählen AWT, Swing, JavaFX & SWT 6
R JTextField - setBackground - kein Effekt AWT, Swing, JavaFX & SWT 5
M JavaFX Mandelbrot-bild noch nicht optimiert AWT, Swing, JavaFX & SWT 7
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
frager2345 Bild aus Dateien lesen und als Hintergrund verwenden AWT, Swing, JavaFX & SWT 2
T Bild in ein graphics füllen AWT, Swing, JavaFX & SWT 2
B Bild lädt nicht AWT, Swing, JavaFX & SWT 2
izoards Bild ausdrucken - PageFormat setzen geht nicht AWT, Swing, JavaFX & SWT 5
M Bild wird nicht geladen obwohl sie gefunden wird AWT, Swing, JavaFX & SWT 0
V JavaFX Bild leer und keine Fehlermeldung AWT, Swing, JavaFX & SWT 21
D JavaFX Bearbeitetes Bild wird nicht gespeichert AWT, Swing, JavaFX & SWT 9
D JavaFX Größe des Bild an ImageView anpassen AWT, Swing, JavaFX & SWT 3
M Bewegtes Bild im BorderLayout.CENTER AWT, Swing, JavaFX & SWT 6
C Falschfarbenbild (lineare Grauwertspreizung)aus Grauwert-Bild erstellen AWT, Swing, JavaFX & SWT 15
C Kleineres Bild an bestimmte Koordinaten setzen AWT, Swing, JavaFX & SWT 6
S Bild neu skalieren - Bild in Bild speichern? AWT, Swing, JavaFX & SWT 6
N Bild Drehen AWT, Swing, JavaFX & SWT 1
Hatsi09 Swing JPanel Bild einfügen AWT, Swing, JavaFX & SWT 14
J Bild von anderer Klasse will nicht laden AWT, Swing, JavaFX & SWT 1
M JavaFX Bild zur ImageView in einem Kreis anzeigen. AWT, Swing, JavaFX & SWT 4
T JFrame Bild einfügen AWT, Swing, JavaFX & SWT 9
M Combobox bild anklicken AWT, Swing, JavaFX & SWT 2
L Bild nicht in der Mitte AWT, Swing, JavaFX & SWT 16
B JavaFX Bild um die eigene Achse drehen lassen AWT, Swing, JavaFX & SWT 0
J Swing Bild in Button AWT, Swing, JavaFX & SWT 11
I Bild über FXML (ImageView, Image) anzeigen AWT, Swing, JavaFX & SWT 1
T Image Loader lädt Bild nicht AWT, Swing, JavaFX & SWT 10
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
T JavaFX Bild in Tabellenzelle AWT, Swing, JavaFX & SWT 2
Ksanatos Swing Bild (.jpg) einlesen und per Button wechseln AWT, Swing, JavaFX & SWT 9
S JPanel rotieren, Bild ist abgeschnitten, Clipping? AWT, Swing, JavaFX & SWT 0
MaxG. Swing Bild Button AWT, Swing, JavaFX & SWT 7
P Swing Bild Skallieren AWT, Swing, JavaFX & SWT 1
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
A Swing Bild wird nicht mehr geladen AWT, Swing, JavaFX & SWT 4
A Swing Gemaltes Bild über saveDialog speichern unter AWT, Swing, JavaFX & SWT 15

Ähnliche Java Themen

Neue Themen


Oben