代码之家  ›  专栏  ›  技术社区  ›  K327

无法在java中检测图像

  •  0
  • K327  · 技术社区  · 11 年前

    我想做一个简单的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);
        }
    }
    

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

    3 回复  |  直到 11 年前
        1
  •  2
  •   blgt    11 年前

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

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

        2
  •  1
  •   Joop Eggen    11 年前

    使用相对路径 "f.png" ,并且类在包(目录)中 first 。所以使用 "/test/f.png" . (请确保一切都是个案敏感的。)

        3
  •  0
  •   K327    11 年前

    我已经完成了这项工作,它使我的代码能够编写

    我唯一应该做的就是:

    将我的图像放入

    project_name/bin/test
    

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