我在整个应用程序中使用了许多图标 - 让我们以确定/取消图标为例。目前它们可能是一个勾号和一个十字(tick.png,cross.png),但我将来可能想替换它们。另外,我想将资源路径保留在一个地方。
这个可以吗:
public class Icons {
public static Icon OK = new ImageIcon(Icons.class.getResource("/icons/tick.png");
public static Icon CANCEL = new ImageIcon(Icons.class.getResource("/icons/cross.png");
}
还是我应该以不同的方式做这件事?我不介意在运行时依赖图像文件的存在,因为它们在 .jar 中
解决方案
我已经使用 Bent 的想法进行初始化,并且我已经将常量设为 final:
public final class Icons {
private static final Logger logger = Logger.getLogger(Icons.class);
public static final Icon OK = icon("/icons/add.png");
public static final Icon CANCEL = icon("/icons/cancel.png");
private static Icon icon(String path) {
URL resource = Icons.class.getResource(path);
if(resource==null) {
logger.error("Resource "+path+" does not exist");
return new ImageIcon();
}
return new ImageIcon(resource);
}
}