我的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)
有人可以告诉我我做错了什么以及如何正确显示图像? 提前致谢, 圣地亚哥
答案 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"));