java无法在JButton中找到ImageIcon
我正在尝试将png类型的图像分配给已经创建的JButton
我在项目的根文件夹images中添加了一个资源文件夹。 我试着用很多方法来解决这个问题,因为类似的问题已经存在,但我似乎无法理解
ImageIcon ico = new ImageIcon("/images/water.png");
bSquares[pos][line].setIcon(ico);
我也尝试过很多其他途径,比如 消息来源: ImageIcon ico=new ImageIcon(“/TelikoDama/images/water.png”)
我想是路径故障,或者我的日食没有找到它?我不知道
这是我得到的NPE:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:205)
at cheeckers.gameUI.initializeGui(gameUI.java:112)
at cheeckers.gameUI.<init>(gameUI.java:33)
at cheeckers.gameUI$1.run(gameUI.java:226)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:745)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:706)
at java.awt.EventQueue$3.run(EventQueue.java:704)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:715)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
编辑 我找到了一个解决方法,我已经在中手动设置了文件夹的路径。类路径:
<classpathentry kind="src" path="/src/images"/>
并获得了如下图像:
Image ico = new ImageIcon(this.getClass().getResource("/images/water.png")).getImage();
bSquares[pos][line].setIcon(new ImageIcon(ico));
# 1 楼答案
您可能应该使用以下代码获取java UI中几乎所有组件的图像文件: