【问题标题】:can not detect image in java无法在java中检测图像
【发布时间】:2013-09-13 13:09:47
【问题描述】:

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

我该怎么解决?

【问题讨论】:

  • Eclipse 无法检测图像路径 这不是 Eclipse。这是你的 java 程序。
  • 参见了解更多下的embedded-resource
  • 您是否将src/test 添加到您的classpath 中?
  • 是的,我添加了 getClass().getResource("/src/test/f.png") 还是不行
  • classpath,JVM 查找内容的路径。它是 Eclipse 中 Run configuration 下的 ENV 变量或设置。

标签: java eclipse swing path imageicon


【解决方案1】:

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

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

【讨论】:

  • 所以你的意思是我应该创建另一个文件夹然后将图像放入其中并再次运行?
  • 差不多,是的。并更新程序内的路径。最好将它们放在static final 字段中。
【解决方案2】:

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

【讨论】:

  • 打开生成的jar,用7zip/WinZip左右,查看目录。 src/test 目录一般是单元测试用的,所以把图片放在 src/resources 左右。
【解决方案3】:

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

我唯一应该做的就是:

把我的图片放进去

project_name/bin/test

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

【讨论】:

    猜你喜欢
    • 2013-11-03
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 2019-12-28
    • 1970-01-01
    相关资源
    最近更新 更多