Frage von dienoppe19, 20

Bild wird von Java nicht geladen. Was tun?

Meine Bild-Datei lässt sich von der Festplatte von Java nicht laden, aber wenn ich es aus dem Internet importieren lasse, funktioniert es. Ich habe auch nochmals genau auf die Pfadeingabe geguckt, aber da die Bild-Datei genau in dem Projekt importiert wurde, muss ich ja nur den Dateinamen in Klammern eingeben. Also Bild1.jpg

Das ist mein Code mit URL:

package Test;


import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;


public class BildClass extends JApplet{

public void init(){
   
           
        ImageIcon icon = null;
        try {
            icon = new ImageIcon(new URL("http://www.dm-euro-rechner.de/imgs/ups/100-euro-schein.jpg">http://www.d...));
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
   
   
    JButton Bild = new JButton(icon);
    Bild.setSize(1000, 1000);
   
    add(Bild);
   

} }

Das ist der Code mit Pfadeingabe

package Test;



import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;


public class BildClass extends JApplet{

public void init(){
ImageIcon ImageIcon = new ImageIcon("Bild1.jpg);
JButton JButton = new JButton();
JButton.setIcon(ImageIcon);
 add(JButton);


}
    }
Antwort
von DexterNemrod, 10

Pfadangaben in Java sind manchmal ziemlich nah an schwarzer Magie. Versuch einmal das Bild ins gleiche Verzeichnis zu packen wie die "BildClass.java" und das Image so zu erzeugen:


ImageIcon ImageIcon = new ImageIcon(BildClass.class.getResource("Bild1.jpg"));

Dadurch, dass du über das Konstante Class-Objekt gehst, stellst du sicher, dass der relative Dateipfad von der Position der Klasse aus gewertet wird.

Meine Codezeile ist allerdings ungetestet und unbewaffnet.

Zusätzlich rate ich dir davon ab, eine Variable ebenso zu benennen wie ihren Typ, das führt nur zu Verwirrungen. Am besten ist es wenn du dich an die Java Konventionen hältst, nach denen beginnt eine Klasse immer mit einem großbuchstaben, eine Variable immer mit einem Kleinbuchstaben.

Übrigens ist deine Lösung mit der URL etwas missverstanden. Du hast einen HTML-Hyperlink eingefügt. Die URL ist allerdings nur das, was zwischen den Anführungszeichen bei href steht.

Kommentar von dienoppe19 ,

Meine URL ist auch eigentlich richtig,  aber gutefrage.net hat dies irgendwie eingefügt. Warum auch immer. Danke für deine Lösung, hat bei mir funktioniert :)

Kommentar von DexterNemrod ,

Ach dann ist wohl einfach der URL-Parser von gutefrage.net Grütze. Vielleicht sollte das ding besser in Code-Blöcken die Füße still halten.

Antwort
von Fregrin, 7
new URL("<a href="http://www.dm-euro-rechner.de/imgs/ups/100-euro-schein.jpg">http://www.dm-euro-rechner.de/imgs/ups/100-euro-schein.jpg</a>")

"a href" ist auch keine URL. Lies dir bitte mal die Doku durch https://docs.oracle.com/javase/tutorial/networking/urls/creatingUrls.html

Kommentar von dienoppe19 ,

Bei mir steht auch (new URL("http://......jpg"));. Hat gutefrage.net einfach eingefügt. Warum auch immer. 

Kommentar von Fregrin ,

Na super. :D

Keine passende Antwort gefunden?

Fragen Sie die Community