Bild auf das JLabel

Hallo also ich wollte auf mein JFrame mithilfe eines JLabels ein Bild einfügen. Mein Problem ist das dieses Bild nicht angezeigt wird. Ich weiß nicht warum? Liegt es am Program Pfad?

Java:
ImageIcon icon = new ImageIcon("C:\\Desktop\\NeuerOrdner\\bild1.gif");
JLabel label1 = new JLabel(icon);
frame.add(label1);
frame.validate();
frame.update(frame.getGraphics());

so wollte ich es machen ging aber nicht kam auf keine Exception Bild wurde einfach nicht angezeigt

ps: code habe ich schnell hier hin geschrieben da ich ihn bereits aus meiner klasse gelöscht hatte 😀

Edit: Nicht das ihr denkt frame = null, Frame wir weiter oben schon erzeugt.

Mfg owned
 
Zuletzt bearbeitet:
Die Java-API hilft da:

Creates an ImageIcon from the specified file. (...)The specified String can be a file name or a file path. When specifying a path, use the Internet-standard forward-slash ("/") as a separator. (The string is converted to an URL, so the forward-slash works on all systems.) For example, specify:
new ImageIcon("images/myImage.gif")

Ansonsten würde ich probieren, einen relativen Pfad anzugeben (sprich - das Bild in den Programmordner packen). Und am besten immer noch ein new File(...).exists() aufrufen, um sicherzustellen, dass die Datei wirklich existiert.
 
liefert icon.getIconWidth() != 0?
dann ist das Bild vorhanden,
wenn nicht, dann Pfad prüfen, mit File anschauen, wird das Bild unter normaleren Umständen korrekt angezeigt?
(validate() und update(), welche in normalen Programmen nicht auftauchen, deuten ja auf einen nicht näher genannten Sonderfall hin)

-----

wenn das Bild korrekt ist, dann stimmt der Rest nicht und immer gilt:
Bild aus dem Spiel lassen, teste doch erstmal mit einem einfachen JLabel nur mit Text,
wird das angezeigt?

wenn ja, dann wirds schwieriger,
wenn nein, dann gibts wirklich ein Einfüge-Problem

liegt z.B. BorderLayout vor und ist schon eine Komponente hinzugefügt,
wird das zweite add() alt aussehen,

es könnte auch sein dass dieses frame, wenn gleich != null, nicht das ist welches auf dem Bildschirm zu sehen ist,
nur vollständige Testprogramme lassen sich ideal aufklären

------

> frame.update(frame.getGraphics());

kannst du wohl für alle Zeit für alle Programme der Welt als unsinnigen Befehl merken/ vergessen
 
1. Ich habe ein Null Layout.
2. icon.getIconWidth() ergibt -1 also ist das richtig?
3. Ja zu dem Programm welches ich schreibe, Ich lese halt viele werte aus einer XML aus und habe zum aktualisieren dann für jedes Label ein Thread, in moment bin ich nur bei 3 Threads, in einem Swing Thread werden dann fals eine aktualisiereung in einen der anderen Threads fest gestellt wurde, die aktualisierungen auf das Frame übertragen.

Ich hoffe mit diesen neuen informationen könnt ihr mir eventuell weiter helfen wenn ihr eine ungefähre stelle von Code brauchst liefer ich sie natürlich nur durch viele if befehle und so ist dieser recht lang geworden.
 
man kann Code auch vereinfachen (nach Kopie), was würde sich am Problem ändern wenn die ganzen ifs wegfallen?
wenn das Bild aufeinmal erscheint, hättest du gar eine Info gewonnen, kannst es selber lösen oder hier zumindest mithelfen,

andere zaubern nicht, sondern müssen dann die Arbeit machen, die du dir einsparst 😉

----

wenn aber das Bild -1 liefert, scheint es erstmal nicht gefunden zu werden oder nicht richtig gelesen,
was ist mit
new File("C:\\Desktop\\NeuerOrdner\\bild1.gif");
exists()-Methode?

ist new File("C:\\Desktop\\NeuerOrdner"); vorhanden?
was liefert dort listFiles() an Auflistung des Verzeichnis-Inhalts?

was kannst du über das Dateisystem z.B. mit Screenshots versichern?
dass normalerweise der Desktop unter 'Dokumente und Einstellungen' usw. liegt, ist bekannt?
 
Zuletzt bearbeitet von einem Moderator:
1. Die File Exestiert
2. Habe alle aktualisierungs Threads aus geschaltet nur noch das standart mäßige erzeugen von Labels und die Text Labels werden auch wieder angezeigt nur das bild mal wieder nicht.

ohne Aktualisierungen sieht das ganze so aus.

Java:
			frame.setLayout(null);
			frame.setName(parser.getName1());
			frame.add(endLabel);
			
			ImageIcon icon = new ImageIcon("C:\\Desktop\\Neuer Ordner\\bild1.gif");
			JLabel label1 = new JLabel(icon);
			frame.add(label1);
			
			
			
			ueberschrift.setForeground(color);
			ueberschrift.setBounds(parser.getUx(), parser.getUy(),parser.getuWidth(), parser.getuHeight());
			ueberschrift.setText(parser.getUeberschriftText());
			frame.add(ueberschrift);
			ueberschrift.setFont(new Font(parser.getFont1(), parser.getFont2(), parser.getuSchriftGroesse()));
			endLabel.setBounds(parser.getBx(), parser.getBy(), parser.getbWidth(), parser.getbHeight());
			endLabel.setFont(new Font(parser.getbFont1(), parser.getbFont2(), parser.getbSchriftgroesse() ));
			endLabel.setForeground(new Color(parser.getbFarbe1() , parser.getbFarbe2() , parser.getbFarbe3()));
			endLabel.setText(frame.getName());
			p.vollbild(frame);

Alle klassen werden alle vorher erzeugt dadran liegt das problem nicht

Edit : Sorry wenn ihr Gänsehaut bei diesem Code bekommt 😀
 
bei null-Layout bringt ein einfaches add() ohne setBounds() der Komponenten nichts,
das ist das was man mit einem Dummy-Text-Label testen könnte

----

aber es geht ja erstmal um das Bild:

> 1. Die File Exestiert
meinst du damit die exists()-Ausgabe?

Java:
    public static void main(String[] args)
    {
        String path = "C://Temp//test.gif";
        File f = new File(path);;
        System.out.println(f.exists());
        ImageIcon icon = new ImageIcon(path);
        System.out.println(icon.getIconWidth());
    }
liefert bei mir
Code:
true
315
schaffst du mir irgendeinem Bild true + -1 ? das wäre übel,
wenn ja dann lade bitte das Bild als Anhang im Posting hoch
 
setBounds dran gepackt und jetzt gehts, hatte ich eigneltich zwischen durch auch probiert aber da ging es nicht

dann hat er mit auch mit den 2 Methoden True und 770 ausgegeben

Danke für eure hilfe und mühe 🙂
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben