无法在 JButton 中找到 ImageIcon
Can't locate ImageIcon in JButton
我正在尝试将 png 类型的图像分配给已创建的 JButton。
我在名为 images 的项目的根文件夹中添加了一个资源文件夹。
我已经尝试通过多种方式来解决它,因为类似的问题已经存在,但我似乎无法弄清楚...
ImageIcon ico = new ImageIcon("/images/water.png");
bSquares[pos][line].setIcon(ico);
我也尝试过很多其他的方法,比如
来源:
ImageIcon ico = new ImageIcon("/TelikoDama/images/water.png");
我认为是路径问题,或者我的eclipse 没有找到它?我不知道。
这是我正在获取的 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.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.access0(EventQueue.java:103)
at java.awt.EventQueue.run(EventQueue.java:706)
at java.awt.EventQueue.run(EventQueue.java:704)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain.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)
编辑
我找到了一个解决方法,我在 .classpath:
中手动设置了文件夹的路径
<classpathentry kind="src" path="/src/images"/>
并像这样访问图像:
Image ico = new ImageIcon(this.getClass().getResource("/images/water.png")).getImage();
bSquares[pos][line].setIcon(new ImageIcon(ico));
您可能应该使用此代码来获取您在 java UI:
中找到的几乎所有组件的图像文件
JButton button = new JButton();
Image img= ImageIO.read(getClass().getResource("//images/water.png"));
button.setIcon(new ImageIcon(img));
我正在尝试将 png 类型的图像分配给已创建的 JButton。
我在名为 images 的项目的根文件夹中添加了一个资源文件夹。 我已经尝试通过多种方式来解决它,因为类似的问题已经存在,但我似乎无法弄清楚...
ImageIcon ico = new ImageIcon("/images/water.png");
bSquares[pos][line].setIcon(ico);
我也尝试过很多其他的方法,比如 来源: ImageIcon ico = new ImageIcon("/TelikoDama/images/water.png");
我认为是路径问题,或者我的eclipse 没有找到它?我不知道。
这是我正在获取的 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.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.access0(EventQueue.java:103)
at java.awt.EventQueue.run(EventQueue.java:706)
at java.awt.EventQueue.run(EventQueue.java:704)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain.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)
编辑 我找到了一个解决方法,我在 .classpath:
中手动设置了文件夹的路径<classpathentry kind="src" path="/src/images"/>
并像这样访问图像:
Image ico = new ImageIcon(this.getClass().getResource("/images/water.png")).getImage();
bSquares[pos][line].setIcon(new ImageIcon(ico));
您可能应该使用此代码来获取您在 java UI:
中找到的几乎所有组件的图像文件JButton button = new JButton();
Image img= ImageIO.read(getClass().getResource("//images/water.png"));
button.setIcon(new ImageIcon(img));