我不知道我哪里出错了,我已经尝试了所有可能的方法来让图像显示在JButton上,但是无法弄清楚为什么getResource类会带来一个空指针。 我还检查了我一次又一次使用的路径,但我提供的路径是正确的。
请帮助
public class Media extends JPanel {
//Declares our media player component
private JPanel video_pnl;
private JButton play_btn;
private JLabel loc_lbl;
private int increment;
ArrayList<String> file_location;
public Media(ArrayList<String> file_location) {
this.file_location = file_location;
increment = 0;
while (increment < file_location.size()) {
video_pnl = new JPanel();
video_pnl.setLayout(new BoxLayout(video_pnl, BoxLayout.Y_AXIS));
loc_lbl = new JLabel();
loc_lbl.setText(file_location.get(increment));
play_btn = new JButton("Play");
ImageIcon img = new ImageIcon(this.getClass().getResource("a.png"));
play_btn.setIcon(img);
video_pnl.add(loc_lbl);
video_pnl.add(play_btn);
add(video_pnl);
increment++;
}
}
public static void main(String[] args) {
//Declare and initialize local variables
ArrayList<String> file_location = new ArrayList<>();
file_location.add("A");
file_location.add("B");
//creates instances of the VlcPlayer object, pass the mediaPath and invokes the method "run"
Media mediaplayer = new Media(file_location);
JFrame ourframe = new JFrame();
ourframe.setContentPane(mediaplayer);
ourframe.setLayout(new GridLayout(5, 1));
ourframe.setSize(300, 560);
ourframe.setVisible(true);
ourframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
答案 0 :(得分:0)
file_location.add("A");
file_location.add("B");
您需要指定文件的路径。当你试图将资源作为一个蒸汽时,你所做的就是添加两个字母表,因此添加NullPointerException
。如果您的图片名称确实是A
和B
,那么请指定扩展名。
答案 1 :(得分:0)
我测试了你的代码,它工作正常。您的图片很可能位于错误的位置。
如果您要使用 图像文件名作为路径,即"a.png"
,则图像需要与调用它的类位于同一个包中。例如
ProjectRoot
src
some.package
Media.java
a.png
在构建时,图像将被复制到类路径中,与Media.class