Java JTree上的自定义图标

Java JTree上的自定义图标,java,swing,icons,Java,Swing,Icons,我有两个关于图标的问题 我正在使用ImageIcons作为JTree上的默认图标。根据教程的建议,我正在使用以下方法加载图标: protected ImageIcon createImageIcon(String path) { java.net.URL imgURL = getClass().getResource(path); if (imgURL != null) { return new ImageIcon(imgURL);

我有两个关于图标的问题

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

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

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

当图像位于项目文件夹而不是src上时,是否有类似的加载方法

是的,您可以使用
图像图标的
字符串
构造函数,它允许您指定文件路径:

ImageIcon imageIcon = new ImageIcon("images/image.png")
可以使用相对于工作目录的路径,也可以使用绝对路径

还有没有一种方法可以自动将图像缩放到正确的大小,以便在JTree上显示


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

你在使用哪个IDE?如果是Eclipse:右键单击-新建源文件夹。我找到了如何定义另一个源目录,但如何从另一个src的类中引用它?与您以前的方法相同。Eclipse将两个源目录编译到同一个目标目录。运行时,所有内容都在类路径中。Java不关心源代码的组织方式。它只是从类路径加载类和资源。读是的,我已经试过了,这就是为什么我要问。Images/JTreeIcons/java.png-resources/Images/JTreeIcons/java.png-/resources/Images/JTreeIcons/java.png。我想我会再试试。试试像
“/resources/the.png”
。最初的
/
表示可以从类路径的根中找到映像,这将避免从包中的类中调用代码所引起的任何复杂问题。谢谢!只需找到默认图标大小为16*16