0

我想做一个简单的小部件,它有一个可以改变图片的组合框。我在 src/test 中有 2 张 png 图片(在我的 .java 文件旁边)

当我运行我的程序时,我收到以下异常:

Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at first.gui.<init>(gui.java:11)
at first.Main.main(Main.java:11)

这是我的代码:

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import javax.swing.event.*;

public class gui extends JFrame {

    JLabel lb = new JLabel();
    Icon[] pics = {
        new ImageIcon(getClass().getResource("f.png")),
        new ImageIcon(getClass().getResource("i.png"))
    };
    String[] str = {
        "f.png", "i.png"
    };

    JComboBox box = new JComboBox(str);

    public gui() {

        super("title");

        setLayout(new FlowLayout());
        box.addItemListener(
            new ItemListener() {
                public void itemStateChanged(ItemEvent event) {


                    if (event.getStateChange() == ItemEvent.SELECTED)

                        lb.setIcon(pics[box.getSelectedIndex()]);
                }
            });
        add(box);
    }
}

我应该怎么做才能解决它?

4

3 回答 3

2

正如您所描述的那样,相对路径应该是./src/test/f.png(eclipse从 relative 启动应用程序$project_loc,这是您项目的根文件夹)

考虑改为使用资源文件夹,例如。src/resources/lib/为您的图像/其他资源。

于 2013-09-13T13:28:31.823 回答
1

您使用相对路径"f.png",并且该类位于 package (directory)first中。所以使用"/test/f.png". (并确保一切都是区分大小写的。)

于 2013-09-13T13:20:42.050 回答
0

我已经这样做了,它使我的代码编写

我唯一应该做的是:

把我的图片放进去

project_name/bin/test

我的 .class 文件在哪里之后它可以识别源

于 2013-09-14T03:09:49.227 回答