ich habe jetzt hier schon mehrere Beiträge zu diesem Thema gelesen, aber ich habe es nicht geschafft, damit mein Problem zu lösen.
Mein einfaches Ziel ist es, ein Bild in meine grafische Oberfläche einzufügen und zwar auf der Position Center.
Mein aktuelles Problem besteht darin, dass zur Zeit kein Bild angezeigt wird - dieses hat die Maße 90x90 und ist vom Typ .bmp. Der Pfad des Bildes, den ich hier aus privaten Gründen nicht anzeige, ist aber korrekt.
Komisch, dass bei mir false ausgegeben wird. Zur Überprüfung des Pfades habe ich gerade das Bild rechtsgeklickt, Eigenschaften, den Ort kopiert, den Namen des Bildes mit der Endung .bmp hinzugefügt, das Ergebnis bleibt false.
Danach änderte ich den Typ in .jpg per Paint, dann den Pfad als Endung .jpg, gleiches Ergebnis - false. Ich verstehe das nicht...
Das Bild ist ohne Umwege normal mit Paint erstellt, den Namen habe ich auch gerade geändert zum Test. Einfach anstatt "d" ein "D" daraus gemacht, aber das Ergebnis änderte sich nicht.
Die Datei hat keinen Kopierschutz, keinen Schreibschutz oder sonstiges.
Sehr merkwürdig.
Also ich hab das ganze in nem Projekt von mir so gemacht:
Java:
...=newImageIcon("images/logo/Bild.gif");
Das Bild befindet sich halt im Projektordner im Ordner "images" im Unterordner "logo" und ich benutze auch Windows.
Mein Vorschlag wäre: Ersetze einfach mal die "\\" durch "/"
System.out.println(newFile("C:/Dokumente und Einstellungen/Basti4231/Desktop/Deck.jpg").exists());
liefert false?
Dieser Aufruf testet ja nur ob das Bild überhaupt "existiert", die Größe spielt dabei keine Rolle.
EDIT: Okay, unter Windows is der Pfad "C:\\Dokumente und Einstellungen\\Basti4231\\Desktop\\Deck.jpg" schon richtig geschrieben.. glaube der nächste Beitrag könnte helfen ..
Wenn die Methode .exists() false zurückgibt hat das ja auch nix mit dem frame, dem label oder sonstwas zu tun sondern die Datei gibt es einfach nicht bzw er kann nicht darauf zugreifen. Das heisst man muss den Fehler beim Pfad oder hier in der Gegend suchen.
Also damit bekomme ich ein Fenster wo ich dann den Pfad auswählen muss, wie erwartet. Ich wähle die Datei aus, die sich auf dem Desktop mit Deck.jpg befindet, bestätige dies mit OK. Danach bekomme ich wiederum die nette Anzeige "false".
Ich habe eingeschränkte Rechte (Ich weiß nicht genau, was so alles nicht unter mein Recht fällt, was ich tun kann), denn ich bin nur ein User in einem Netzwerk.
Desweitern benutze ich Eclipse SE.
Das könnte das Problem sein, dürfte es aber nicht. Ich arbeit hier in der Firma auch mit eingeschränktem Konto (Windows XP) und Eclipse aber ich kann ohne Probleme auf Dateien zugreifen ..
Im Grunde genommen kann ich ja auch zugreifen ohne Problem. Ich kann alles mit dem Bild machen, was mir lieb ist. Aber anscheinend geht doch irgendwas nicht, ich weiß nicht womit es zusammen hängen könnte. Echt merkwürdig das ganze
Das finde ich ein bisschen merkwürdig. Wie schaut den der Code drumherum aus bzw. hast Du mal versucht das Bild aus einem anderen Verzeichnis heraus zu laden?
Sehr komischerweise habe ich ein wenig rumgewurschtelt, keinen Plan, was genau jetzt anders ist, aber es klappt xD, in der Foo-Klasse wird nun true geliefert. Problemchen - das Bild wird nicht angezeigt.
Ich glaube du hast mich falsch verstanden, denn ich meinte gleichzeitig, dass ich den Code angepasst habe und diesen ausgeführt habe, es ist mir auch klar, dass in einer so winzigen Foo-Klasse keine Gui mit passendem Bild von selbst sich ausführt
Das bedeutet, dass ich quasi das Bild für diesen Zweck eigentlich verwenden kann.
Aber irgendwas im Code, oder irgendeine technische Sache verhindert meinen Erfolg bislang ^^
Also das setzen der Labels hat keine Wirkung und wo ich die Methode von dir hinsetzen sollte im Code weiß ich auch nicht, wenn ich es einfach so in der Methode public void los() verwende kommt ein Fehler: "Cannot make a static reference to ther non-static method setOpaque(boolean) from the type JComponent"
Die Methode musst Du an einem Labelobjekt aufrufen. Sollte aber in Deinem Fall uninteressant sein, da damit nur festgelegt wird, ob der Komponentenhintergrund transparent ist oder nicht.
kannst höchstens mal setOpaque(true) und setBackground(Color.GREEN) an Deinem JLabel aufrufen, um festzustellen, ob das richtige JLabel auf der GUI verwendet wird. Aber wenn Dein Code so wie oben beschrieben ausschaut, gibt's ja nur ein JLabel.
Hast du mal dein Bild kleiner (also nicht von der Dateigröße sondern die "eigentliche" Größe) gemacht? Oder ne andere Endung versucht?
Ich hab bei mir mal ein wenig rumgespielt und hatte das selbe problem. Als ich dann das Bild kleiner gemacht hab gings.
Erklären kann ich mir das ganze nicht, probiers mal bitte aus.
Ich hatte gestern noch ausprobiert, Bilder aus meinem "Eigene Bilder"- Ordner zu laden.
Siehe da: Es hat geklappt xD
Als ich mein Bild Deck.jpg dorthin verschoben habe, klappte es natürlich nicht. Als ich die Größe auf die des Bildes, bei dem es funktionierte, änderte, wollte sich das Bild nicht zeigen ^^
Ich habe noch ein anderes Problem, was sich mir beim Einlesen einer .CSV-Datei ergab. Ich denke aber ich sollte ein neues topic dafür öffnen...