无法使用createicon()方法获取图像的路径(url)

9w11ddsr  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(396)

所以当我试着用 createIcon() 方法,它工作正常。
但是,
当我试图把这个方法放到另一个类中时(比如 Utils.java ),这样我就不需要在对象需要icon的类中重新声明方法,我得到这个消息。
无法加载图像:/images/save16.gif
线程“awt-eventqueue-0”java.lang.nullpointerexception中出现异常:无法调用“java.net.url.toexternalform()”,因为“location”为null

  • 如果需要,还有更多的信息

这是包含createicon()方法的按钮类

public class Toolbar extends JToolBar implements ActionListener{
   private final JButton saveBtn;

   public Toolbar() {
      saveBtn = new JButton();

      saveBtn.setIcon(createIcon("/images/Save16.gif"));

      saveBtn.setToolTipText("Save");
      saveBtn.addActionListener(this);
      add(saveBtn);
   }

   private ImageIcon createIcon(String path) { 
      URL url = getClass().getResource(path);

      if(url == null) {
         System.err.println("Unable to load image: " + path);
      }

      ImageIcon icon = new ImageIcon(url);

      return icon;
  }
}

这是我试图在另一个类中声明的createicon()方法

public class Utils {
    public static ImageIcon createIcon(String path) {
        URL url = System.class.getResource(path);

        if(url == null) {
                System.err.println("Unable to load image: " + path);
        }

        ImageIcon icon = new ImageIcon(url);

        return icon;
    }
}

这改变了 setIcon() 方法分为:

saveBtn.setIcon(Utils.createIcon("/images/Save16.gif"));

从我在消息中分析的情况来看,问题可能是 url 这不能得到 path 从我的按钮的类,我已经尝试了几个替代品,但它仍然没有工作。我应该如何正确设置它?谢谢

uurity8g

uurity8g1#

这样做有效:

URL url = getClass().getResource(path);

因为您得到了toolbar类的类,它是所有其他类/文件所在的位置。
这不起作用:

URL url = System.class.getResource(path);

因为“system”类是在jdk中找到的,而不是在应用程序类中。
我想你可以试试:

URL url = Utils.class.getResource(path);

相关问题