Tôi có một số biểu tượng được sử dụng trong suốt một ứng dụng - hãy lấy biểu tượng ok/cancel làm ví dụ. Tại thời điểm này họ có thể là một đánh dấu và một cây thánh giá (tick.png, cross.png) nhưng tôi có thể muốn thay thế chúng trong tương lai. Ngoài ra, tôi muốn giữ đường dẫn tài nguyên ở một nơi.Hằng số biểu tượng Java - Hằng số tĩnh có ổn không?
là ok này:
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");
}
Hoặc tôi nên làm điều này một cách khác nhau? Tôi không quan tâm dựa vào sự tồn tại của tập tin hình ảnh trong thời gian chạy kể từ khi họ đang ở .jar
Giải pháp
Tôi đã sử dụng ý tưởng Bent cho khởi động, và tôi đã thực hiện các hằng số 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);
}
}
OK và CANCEL phải thuộc loại Icon chứ không phải ImageIcon. Không cần phải trưng ra ImageIcon như một phần của hợp đồng công khai của nó. –
Điểm tốt - Đó là những gì tôi nhận được để nhập ví dụ để nhanh chóng! Sửa lỗi – Draemon