ImageIcon
'u genişleten bir özel sınıf oluşturuyorum, böylece dosya URL'sini ve belirli bir rengi ileterek, görüntüyü tekrar yükleyerek yükler. Bu sınıf, farklı kullanıcı arabirimleri geliştirmek için kullandığım bir .jar dosyasında paketlenmiştir (buna UI.jar
diyelim).Kaynak veya farklı klasörlerdeki resimlerin yüklenmesi
Bu sınıf, UI.jar
içinde paketlenmiş bir klasörde bulunan görüntülerin, başka bir .jar dosyasında bulunan diğer görüntülerin, muhtemelen bir .jar'de bulunmayan klasörlerde bulunan diğer URL'lerdeki diğer resimlerin yüklenmesi için tasarlanmalıdır. Yani bu kodu geliştirdi:
BufferedImage bi = null;
try{
//CASE 1: the image related to this url is packed in a .jar file
bi = ImageIO.read(resourceClass.getResource(url));
}catch(Exception e){
try{
//CASE 2: the image related to this url is somewhere else
bi = ImageIO.read(new File(url));
}catch(Exception ee){
//CASE 3: none of the above
ee.printStackTrace();
}
}
Bu yöntem çalışır, ama sorun ben ImageIcon uzanır benim özel sınıfın bir argüman olarak resourceClass
geçmek her zaman var olduğunu ve bu biraz zor ve rahatsız.
Hedefime ulaşmanın başka yolları var mı?
Küçük performans/kod sorunu: Dışarıdan "try/catch" öğesine gerek yoktur. Bunun yerine, 'Class.getResource (url)' 'null' döndürdüğünü test edebilirsiniz. – haraldK