Java JTree上的自定义图标
我有两个关于图标的问题 我正在使用ImageIcons作为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);
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