JTree上的自定义图标

时间:2012-01-19 23:10:55

标签: java swing icons

我对图标有两个问题。

我使用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上显示吗?谢谢!

2 个答案:

答案 0 :(得分:5)

代码不会从src文件夹加载ImageIcon。它从运行时类路径加载它。对于要在运行时类路径中的图像,最简单的方法是将它们放在src文件夹中,以便IDE自动将它们与.class文件一起复制到目标文件夹。

如果需要,可以在项目中定义另一个源目录(例如,名为resources),IDE也会将此源目录的文件复制到目标文件夹。这允许将Java文件与资源文件分开。

答案 1 :(得分:3)

  

有没有办法在项目文件夹上而不是在src上加载图像?

是的,您可以使用String的{​​{1}}构造函数,它可以指定文件路径:

ImageIcon

您可以使用相对于工作目录的路径,也可以使用绝对路径。

  

还有一种方法可以自动缩放正确尺寸的图像,以便在JTree上显示吗?

看看this question的答案,我想这会让你做你想做的事。