Ich habe versucht, ein in der Größe veränderbares Bild zu erstellen, indem ich BufferedImage in einem Panel zeichne und es neu zeichne, wann immer componentResized passiert ist. Obwohl das Bild in früheren Versionen (die entweder nicht oder nicht richtig skaliert wurden) korrekt geladen wurde, behauptet Java, dass das Bild nicht vorhanden ist. Der Code ist alsWarum gibt Java plötzlich die Nullzeiger-Ausnahme für das Bild zurück?
public class Image extends JPanel{
BufferedImage img=null;
public Image{
try {
img = ImageIO.read(new File("Untitled.png"));
}
catch (IOException e) {
}
Dimension d=getSize();
Graphics g=getGraphics();
g.drawImage(img, 0, 0, d.width, d.height, null);
auch ohne die Komponente Hörer folgt, es gibt Nullpointer auf drawImage. Aber ich weiß, dass das Bild nicht null ist, da sie vorher gearbeitet, die mir zu denken führt es etwas falsch mit dem Code hier
Probieren Sie 'System.out.println (neue Datei (" Untitled.png "). GetAbsolutePath());' und überprüfen Sie, ob die Datei wirklich da ist. Meine Vermutung: Es ist nicht. – Tom
Sie sollten nicht nur eine IOException ausgeben, zumindest die Stack-Trace-Datei drucken, damit Benutzer nicht, warum es nicht für sie funktioniert. –
'catch (IOException e) {}' Mach das nie. Ihr 'ImageIO.read' wirft wahrscheinlich eine Ausnahme, die Sie wegen des leeren catch-Blocks nicht kennen. Außerdem sollten Sie 'getGraphics' nicht zum Malen verwenden. Siehe http://stackoverflow.com/a/15991175/2891664. – Radiodef