无法在JButton

时间:2015-05-23 14:40:51

标签: java icons jbutton

我正在尝试将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)

修改 我找到了一个解决方法,我手动设置了.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));

1 个答案:

答案 0 :(得分:2)

您应该使用此代码来获取几乎所有在java UI中找到的组件的图像文件:

JButton button = new JButton();
Image img= ImageIO.read(getClass().getResource("//images/water.png"));
button.setIcon(new ImageIcon(img));