Hallo,
ich hab schon wieder mal ein kleines Problemchen, dessen Ursache ich nicht erkenne.
Das ist der Code, wie er in meinem Java-Buch vermerkt ist. Beim Ausführen bekomme ich allerdings eine Nullpointer-Exception:
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at K18.MeinLabel.<init>(MeinLabel.java:43) (das ist die Zeile "Icon icon=new ImageIcon(url))
at K18.MeinLabel.main(MeinLabel.java:30) ((hier wird das Objekt erzeugt,in dessen Konstruktor sich das Ganze abspielt).
Soweit, sogut. Wenn ich in Zeile 43 das "url" in Klammern direkt gegen den Pfad austausche, läuft das Programm anstandslos. Offenbar scheint also ein Problem in Zusammenhang mit der Zeile vorzuliegen, in der der Pfad ursprünglich definiert wird ("URL url = ... "). Aber warum ?
Testweise hab ich mal die Datei in den gleichen Ordner gelegt wie die *.java bzw *.class-Datei und den Pfad auf "/Schiff.png" geändert, bringt aber auch nix.
Die Files (incl. Bilddateien, *.java und *.class-Files) liegen bei mir in einer Dateistruktur D:\Dummies\src\K18\, die Bilddatei wurden mal testweise auch ins Hauptverzeichnis des Laufwerks kopiert (daher "d:\\Schiff.png").
ich hab schon wieder mal ein kleines Problemchen, dessen Ursache ich nicht erkenne.
Java:
import java.awt.FlowLayout;
import java.net.URL;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class MeinLabel extends JFrame {
public static void main(String[] args) {
new MeinLabel();
}
public MeinLabel() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Setze die JLabel per FlowLayout nebeneinander
setLayout(new FlowLayout());
// Diese URL verwenden Sie zur Erzeugung eines Icons.
URL url = getClass().getResource("D:\\schiff.png");
// Dieses Icon kann schließlich dem JLabel im Konstruktor übergeben werden.
Icon icon = new ImageIcon(url);
JLabel bildlabel = new JLabel(icon);
add(bildlabel);
// Ein JLabel mit Text
JLabel textlabel = new JLabel("Gleich weg!");
add(textlabel);
textlabel.setText("Neuer Text");
String str = textlabel.getText();
System.out.println(str);
pack();
setVisible(true);
}
}
Das ist der Code, wie er in meinem Java-Buch vermerkt ist. Beim Ausführen bekomme ich allerdings eine Nullpointer-Exception:
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at K18.MeinLabel.<init>(MeinLabel.java:43) (das ist die Zeile "Icon icon=new ImageIcon(url))
at K18.MeinLabel.main(MeinLabel.java:30) ((hier wird das Objekt erzeugt,in dessen Konstruktor sich das Ganze abspielt).
Soweit, sogut. Wenn ich in Zeile 43 das "url" in Klammern direkt gegen den Pfad austausche, läuft das Programm anstandslos. Offenbar scheint also ein Problem in Zusammenhang mit der Zeile vorzuliegen, in der der Pfad ursprünglich definiert wird ("URL url = ... "). Aber warum ?
Testweise hab ich mal die Datei in den gleichen Ordner gelegt wie die *.java bzw *.class-Datei und den Pfad auf "/Schiff.png" geändert, bringt aber auch nix.
Die Files (incl. Bilddateien, *.java und *.class-Files) liegen bei mir in einer Dateistruktur D:\Dummies\src\K18\, die Bilddatei wurden mal testweise auch ins Hauptverzeichnis des Laufwerks kopiert (daher "d:\\Schiff.png").