java - java中无法检测到图像

标签 java eclipse swing path imageicon

我想制作一个简单的小部件,它有一个可以更改图片的组合框。 我在 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);
    }
}

我应该怎么做才能解决这个问题?

最佳答案

根据您描述的问题,相对路径应该是 ./src/test/f.png (eclipse 从相对 $project_loc 启动应用程序,即您项目的根文件夹)

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

关于java - java中无法检测到图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18787148/

相关文章:

java - 执行计时器任务时 Derby 数据库中的内存泄漏

java - 如何更改我的代码,以便结果基于用户输入的年日?

java - Mockito 在尝试对包私有(private)父类(super class)上实现的 stub 方法调用实际方法

java - 为什么 JList 'cut' 或其他内容出现在我的 GUI 框架输出中?

java - 如何编辑 JComboBox 并在 JEditorPane 中选择文本

java - Swing 应用程序中的小点尾随光标

java - 遗传算法,如何为生成的源代码定义适应度函数

eclipse - Nodeclipse 控制台中的奇怪字符

java - 在 Eclipse 中安装【java 库】

java - 开发Eclipse Plugin时如何在View中显示给定的内容?