我在应用程序中使用了许多图标 - 让我们以ok/cancel图标为例。目前他们可能是一个勾号和一个交叉(tick.png,cross.png),但我可能想在将来替换它们。另外,我想将资源路径保存在一个地方。Java图标常量 - 静态常量是否正常?
这是正确的:
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
解决方案
我用特对初始化的想法,我所做的常数最终:
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);
}
}
确定和取消应该是类型图标,而不是ImageIcon的的。无需将ImageIcon公开为其公共合同的一部分。 – 2008-12-15 19:02:50
好点 - 这就是我快速输入示例所得到的结果!固定 – Draemon 2008-12-15 19:06:13