我在单击按钮后添加图像时遇到麻烦,我只添加了jlabel/imageicon
代码JLabel picture;
public Check() {
picture = new JLabel(createImageIcon("images\exit.png"));
add(picture, BorderLayout.WEST);
}
public void actionPerformed(ActionEvent e) {
picture.setIcon(createImageIcon("images\update.png"));
}
protected static ImageIcon createImageIcon(String path) {
java.net.URL imgURL = Check.class.getResource(path);
System.err.println(imgURL);
if (imgURL != null) {
return new ImageIcon(imgURL);
} else {
System.err.println("Couldn't find file: " + path);
return null;
}
}
我总是得到空的路径,可能是什么问题
图像路径是正确的,当我测试另一种方式,
public Check() {
String imgStr = "images\exit.png";
ImageIcon image = new ImageIcon(imgStr);
JLabel label1 = new JLabel(image, JLabel.CENTER);
JPanel South = new JPanel();
South.add(label1);
add("South", South);
}
显示图像,但这是在我运行它时完成的,图像已经在那里,而不是在我单击按钮时。
谢谢
请尝试picture.setIcon(createImageIcon("/images/update.png"));
,因为它看起来像您的图像是从类路径加载的
看到:
查找具有给定名称的资源。如果没有,此方法返回null找到具有此名称的资源。搜索资源的规则与给定类关联的由定义类实现类的加载器。
此方法在执行这些操作之后将调用委托给其类装入器更改为资源名称:如果资源名称以"/"开头,则为"/"是不变的;否则,包名将被附加到资源前将"。"转换为"/"后的名称。如果这个对象是由启动加载程序,调用被委托给ClassLoader.getSystemResource .
http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Class.html getResource % 28以% 29日
或者您可以简单地将这一行添加到执行的操作方法中。
picture = new JLabel(new ImageIcon("/images/update.png"));