java的getSource用法
class.getResource()
今天在使用java的getSource方法时遇见了空指针异常
如下图:

在网上参考了很多文章
主要的意思还是getSource方法是根据class文件来定位的而不是java文件位置,于是我将图片放在class文件所在目录下

观测结果仍然还是null
后面看见一篇博客(getResource方法具体可见该文章)
发现是自己对于getSource方法的用法还不清楚
类名.class.getResource("")查询的是class文件所在的目录
如下

而类名.class.getResoure("/")查询的则是根目录也就是bin目录

所以后面我也就将图片改放在bin目录下
结果运行出来
如下:

总结:
遇见图片加载不出来的问题,就考虑下路径是否正确,如果找不出来路径出错,就把路径打印出来,验证其正确性,然后再考虑其他问题
源代码(仅供参考)
package test;
import java.awt.Container;
import java.awt.Image;
import java.net.URL;
import javax.swing.*;
public class SwingAndThread extends JFrame{
private JLabel jl=new JLabel();
private static Thread t;
private int count=0;
private Container container=getContentPane();
public SwingAndThread()
{
setBounds(300,200,250,100);
container.setLayout(null);
URL url=SwingAndThread.class.getResource("/1.png");
//URL url=getClass().getResource("/2.jpg");
System.out.println(url);
Icon icon=new ImageIcon(url);
jl.setIcon(icon);//将图标放置在标签中
//设置图片在标签的左上方
jl.setHorizontalAlignment(SwingConstants.LEFT);
jl.setBounds(10,10,200,50);//设置标签位置与大小
jl.setOpaque(true);
t=new Thread(new Runnable(){
public void run() {
while(count<=200)
{
//将标签的横坐标用变量表示
jl.setBounds(count,10,200,50);
//((ImageIcon) icon).setImage(((ImageIcon) icon).getImage().getScaledInstance(count,10,Image.SCALE_DEFAULT));
try {
Thread.sleep(1000);
}catch(Exception e)
{
e.printStackTrace();
}
count+=4;
if(count==200)
{
count=10;
}
}
}
});
t.start();
container.add(jl);
setVisible(true);
//设置窗体的关闭方式
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
}
public static void main(String [] args)
{
new SwingAndThread();
}
}
版权声明:本文为qq_43626599原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。