我对图标有两个问题。
我使用ImageIcons作为JTree上的默认图标。正如教程所建议的那样,我正在使用这种方法加载图标:
protected ImageIcon createImageIcon(String path) {
java.net.URL imgURL = getClass().getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL);
} else {
System.err.println("Couldn't find file: " + path);
return null;
}
}
虽然为了实现这一点,我必须使用我认为很乱的源代码将图像存储在文件中(但是我读了它需要运行.jar)。有没有办法在项目文件夹上而不是在src上加载图像?
还有一种方法可以自动缩放正确尺寸的图像以便在JTree上显示吗?谢谢!
答案 0 :(得分:5)
代码不会从src
文件夹加载ImageIcon。它从运行时类路径加载它。对于要在运行时类路径中的图像,最简单的方法是将它们放在src
文件夹中,以便IDE自动将它们与.class文件一起复制到目标文件夹。
如果需要,可以在项目中定义另一个源目录(例如,名为resources
),IDE也会将此源目录的文件复制到目标文件夹。这允许将Java文件与资源文件分开。
答案 1 :(得分:3)
有没有办法在项目文件夹上而不是在src上加载图像?
是的,您可以使用String
的{{1}}构造函数,它可以指定文件路径:
ImageIcon
您可以使用相对于工作目录的路径,也可以使用绝对路径。
还有一种方法可以自动缩放正确尺寸的图像,以便在JTree上显示吗?
看看this question的答案,我想这会让你做你想做的事。