我想在GUI中创建一个漂亮的按钮。有一个描述how to make all kinds of pretty buttons的教程
问题是,他们使用ImageIcon。
因此,下一步是查看图像图标的工作原理以及它们的作用。另一个教程在同一网站上标题为" How to use icons"。
它为您提供了以下代码:
/** Returns an ImageIcon, or null if the path was invalid. */
protected ImageIcon createImageIcon(String path,
String description) {
java.net.URL imgURL = getClass().getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL, description);
} else {
System.err.println("Couldn't find file: " + path);
return null;
}
}
java.net.URL imgURL = getClass().getResource(path)
行对我来说非常困惑。为什么他们不直接return new ImageIcon(path, description)
?
答案 0 :(得分:2)
getResource()
搜索负责加载该类的ClassLoader
可用的整个路径,搜索该资源。包括在类路径中搜索JAR文件等内容
http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getResource-java.lang.String-
答案 1 :(得分:1)
getClass().getResource(path)
在类路径中找到该图标并返回用于加载它的URL。这与您建议使用的不同。只接受String的构造函数从文件系统加载图标。它是通过getClass().getResource(path)
完成的,这样您就可以在分发jar中打包您的图标和应用程序所需的所有资源,并仍然可以找到并加载它。否则,您必须依赖文件系统上的某些路径,并确保它们存在于您期望的位置,以便您可以使用相对路径。
答案 2 :(得分:0)
getClass().getResource(path)
加载与类文件所在位置相关的资源。这将在IDE中以及在将类打包到JAR文件