0
我有我的java項目的問題。我想使用背景圖像製作JFrame,但是當我使用javax.swing.ImageIcon設置背景JLabel的圖標時,它在控制檯中顯示異常錯誤,當我運行程序並且圖像不起作用時,只顯示一個空白的JFrame。這裏是我的代碼:擺動ImageIcon導致錯誤,不使圖像出現
@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)
誰能告訴我我做錯了什麼,以及如何使圖像顯示正常嗎? 在此先感謝, 聖地亞哥
很可能,您正在從不存在的路徑加載圖像;嘗試'新的ImageIcon(getClass()。getResource(「/ spaceage/images/starfield.png」)))'。注意添加'/'字符。另外,'。'你看到的實際上是子文件夾 – Aarowaim
我已經試過了;它與使用點相同。錯誤仍然發生在斜槓上,所以我認爲它與圖像的路徑沒有任何關係。 –
是的,根據我的經驗,爲.jar文件加載圖像比使用完整文件路徑要困難得多,幾乎似乎要求voodoo才能正常工作。我使用'images'包並調用'getClass()。getResource(「/ images/tileset.png」)進行了多次嘗試,結果在我的一個項目中工作了' – Aarowaim