[英]Attempting to set JLabel icon to image directory, null pointer exception instead
[英]Trying to set image icon for JLabel but URL returns null
嘗試為JLabel
設置圖像圖標,但返回null
URL?
我正在使用Netbeans,並在項目中包含background.png,但它仍返回null
?
import java.awt.image.BufferedImage;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*;
public class NewClass extends JFrame {
JLabel o = new JLabel();
public NewClass() {
createImage("background.png");
add(o);
setVisible(true);
setSize(100, 100);
setResizable(false);
}
public static void main(String[] args) {
new NewClass();
}
public void createImage(String str) {
URL url = getClass().getResource(str);
try {
BufferedImage image = ImageIO.read(url);
o.setIcon(new ImageIcon(image));
} catch (Exception e) {
e.printStackTrace();
}
}
}
堆棧跟蹤中的錯誤詳細信息:
java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(ImageIO.java:1388)
at Test.NewClass.createImage(NewClass.java:32)
at Test.NewClass.<init>(NewClass.java:18)
at Test.NewClass.main(NewClass.java:26)
當我嘗試時,請您能不能確定為什么它不起作用
JLabel o = new JLabel(new ImageIcon("background.png");
它可以工作,但是如果background.png不存在,這很容易出錯? 謝謝
編輯:components-SplitPaneDemo2Project-這是netbeans項目的名稱,背景png直接在此文件夾內
位於此處:C:\\ Users \\ John \\ Documents \\ NetBeansProjects \\ components-SplitPaneDemo2Project
屏幕截圖:
我已經對您的代碼進行了一些更改測試,並且效果很好:
public class NewClass extends javax.swing.JFrame {
JLabel o = new JLabel();
public NewClass() {
initComponents();
createImage("background.png");
add(o);
setVisible(true);
setSize(100, 100);
setResizable(false);
o.setLocation(20, 20);
o.setSize(100, 25);
}
public void createImage(String str) {
URL url = getClass().getResource(str);
try {
BufferedImage image = ImageIO.read(url);
o.setIcon(new ImageIcon(image));
} catch (Exception e) {
e.printStackTrace();
}
}
....
}
在構造函數中,我已經為“ o”設置了位置和大小。
“ background.png”必須位於“ NewClass”的父包中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.