我想制作一个简单的Widget,它有一个可以改变图片的组合框。 我在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);
}
}
我该怎么做才能解决它?
答案 0 :(得分:2)
如你所描述的那样问题,相对路径应该是./src/test/f.png
(eclipse从相对$project_loc
启动应用程序,这是项目的根文件夹)
请考虑使用资源文件夹,例如。 1}}或src/resources/
用于您的图片/其他资源。
答案 1 :(得分:1)
您使用相对路径"f.png"
,该类位于包(目录)first
中。所以使用"/test/f.png"
。 (并确保一切都是区分大小的。)
答案 2 :(得分:0)
我已经完成了这个并且它使我的代码写了
我应该做的唯一事情是:
将我的图片放入
project_name/bin/test
我的.class文件在哪里 之后它可以识别来源