[英]Trying to set image icon for JLabel but URL returns null
Trying to set image icon for JLabel
but returns a null
URL? 尝试为
JLabel
设置图像图标,但返回null
URL?
I am using Netbeans and have included background.png in my project but it still returns null
? 我正在使用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();
}
}
}
Error details in stack trace: 堆栈跟踪中的错误详细信息:
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)
Please could you help unsure why it doesn't work, when i try 当我尝试时,请您能不能确定为什么它不起作用
JLabel o = new JLabel(new ImageIcon("background.png");
It works but this is error prone incase background.png doesn't exist? 它可以工作,但是如果background.png不存在,这很容易出错? Thankyou
谢谢
EDIT: components-SplitPaneDemo2Project - where this is name of netbeans project & background png is directly inside this folder 编辑:components-SplitPaneDemo2Project-这是netbeans项目的名称,背景png直接在此文件夹内
Located in here: C:\\Users\\John\\Documents\\NetBeansProjects\\components-SplitPaneDemo2Project 位于此处:C:\\ Users \\ John \\ Documents \\ NetBeansProjects \\ components-SplitPaneDemo2Project
Screenshot: 屏幕截图:
I've tested your code with some changes and it works fine: 我已经对您的代码进行了一些更改测试,并且效果很好:
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();
}
}
....
}
in the constructor I've set location and size for 'o'. 在构造函数中,我已经为“ o”设置了位置和大小。
'background.png' must be in the parent package of 'NewClass'. “ background.png”必须位于“ NewClass”的父包中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.