Swing ImageIcon导致错误而不显示图像

时间:2014-04-17 22:11:19

标签: java swing nullpointerexception embedded-resource imageicon

我的java项目有问题。我正在尝试使用背景图像制作JFrame,但是当我使用javax.swing.ImageIcon来设置背景JLabel的图标时,它在我运行程序时显示控制台中的异常错误,而且图像没有工作,只显示一个空白的JFrame。这是我的代码:

@SuppressWarnings("serial")
public class MainUI extends JFrame {
    public static void main(String[] args) {
        new MainUI().build(); // Calls build method
    }
    private void build() {
        // Builds JFrame
        JFrame frame = new JFrame();
        JPanel base = new JPanel();
        JLabel background = new JLabel();
        frame.setVisible(true);
        frame.setTitle("Space Age");
        frame.setSize(640,480);
        frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        frame.setAutoRequestFocus(false);
        frame.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        frame.setLocationRelativeTo(null);
        base.setSize(640,480);
        base.setAlignmentX(0.0F);
        base.setAlignmentY(0.0F);
        base.setBackground(new java.awt.Color(255,255,255));
        background.setSize(640,480);
        background.setAlignmentX(0.0F);
        background.setAlignmentY(0.0F);
        background.setIcon(new ImageIcon(getClass().getResource("spaceage.images.starfield.png")));
        frame.add(base);
        frame.add(background);
    }
}

这是错误消息的样子:

Exception in thread "main" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(Unknown Source)
    at spaceage.src.MainUI.build(MainUI.java:36)
    at spaceage.src.MainUI.main(MainUI.java:15)

有人可以告诉我我做错了什么以及如何正确显示图像? 提前致谢, 圣地亚哥

2 个答案:

答案 0 :(得分:0)

我弄清楚我做错了什么。这样:

background.setIcon(new ImageIcon(getClass().getResource("spaceage.images.starfield.png")));

需要更改为:

background.setIcon(new ImageIcon(getClass().getResource("/spaceage/images/starfield.png")));

我收到了NullPointerException,因为我输入的图片路径不正确,因此getResource()无法找到图片并返回null

答案 1 :(得分:0)

这也将为您提供帮助。您可以将其与您的要求链接。 您可以使用此-

ImageIcon iid = new ImageIcon("C:\\Users\\ranig\\My\\spaceinvaders\\ball.png");

注意:C:\ Users \ ranig \ My \ spaceinvaders \ ball.png是ball.png图片的完整路径。

代替此:

ImageIcon iid = new ImageIcon(this.getClass().getResource("ball.png"));