package fcb.java.school;import java.awt.BorderLayout;
import java.net.URL;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JToolBar;public class JToolBarTest { public static void main(String[] args) {
JToolBar bar = new JToolBar();
JButton button1, button2, button3;
URL url1 = Thread.currentThread().getContextClassLoader()
.getResource("left.jpg");
URL url2 = Thread.currentThread().getContextClassLoader()
.getResource("center.jpg");
URL url3 = Thread.currentThread().getContextClassLoader()
.getResource("right.jpg");
button1 = new JButton(new ImageIcon(url1));
button1.setToolTipText("向前");
button2 = new JButton(new ImageIcon(url2));
button2.setToolTipText("向上");
button3 = new JButton(new ImageIcon(url3));
button3.setToolTipText("向后");
bar.add(button1);
bar.add(button2);
bar.add(button3);
bar.setFloatable(true);
JFrame frame = new JFrame("JToolBar工具条");
frame.setBounds(200, 200, 400, 400);
// frame.setSize(400,400);
frame.add(bar, BorderLayout.NORTH);
frame.add(new JTextArea(), BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true); }
}
运行以上代码总是提示
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:205)
at fcb.java.school.JToolBarTest.main(JToolBarTest.java:23)
其中图片都在.java源文件目录下,希望大神们指点一下URL的用法!不胜感激URL异常

解决方案 »

  1.   

    URL url1 = Thread.currentThread().getContextClassLoader().getResource("F:\\Workspaces\\MyEclipse\\Java\\left.jpg");
    URL url2 = Thread.currentThread().getContextClassLoader().getResource("F:\\Workspaces\\MyEclipse\\Java\\center.jpg");
    URL url3 = Thread.currentThread().getContextClassLoader().getResource("F:\\Workspaces\\MyEclipse\\Java\\right.jpg");
    绝对路径也不行
      

  2.   

    ClassLoader的getResource的参数是相对于项目CLASSPATH的路径。
    在Eclipse的项目里新建一个目录,然后加到项目的Build Path里,然后把图片丢到这个目录下。
      

  3.   

    我不知道Windows是怎样的,但是Mac上的URI看上去是这样:file:/var/tmp/file
    你自己建一个文件new File("blabla").toURI(),看看是什么格式