Я видел много разных примеров, показывающих, как установить IconImage
в JFrame, чтобы приложение использовало этот значок вместо стандартной кофейной кружки. Ни один из них не работает на меня.
Вот «мой» код (сильно заимствованный из других постов и интернета в целом):
public class MyApp extends JFrame
{
public MyApp()
{
ImageIcon myAppImage = loadIcon("myimage.jpg");
if(myAppImage != null)
setIconImage(myAppImage.getImage());
}
private ImageIcon loadIcon(String strPath)
{
URL imgURL = getResource(strPath);
if(imgURL != null)
return new ImageIcon(imgURL);
else
return null;
}
}
Этот код дает сбой в loadIcon
при вызове метода getResource()
. Для меня здесь есть только 2 возможности: (1) myImage.jpg
находится в неправильном каталоге или (2) getResource()
что-то не нравится в моем изображении (мне пришлось преобразовать его из CMYK в RGB в Photoshop, чтобы я мог использовать то же изображение в другом месте с ImageIO
.)
Я использовал трюк System.out.println(new File(".").getAbsolutePath());
, чтобы найти каталог, в котором должно храниться изображение JPG, и все равно ничего не сработало. Впоследствии я поместил JPG практически в каждый каталог внутри моего проекта, просто чтобы исключить местоположение файла как виновника.
Так что это заставляет меня поверить, что getResource()
что-то не нравится в самом JPG. Но я уже исчерпал свое понимание образов и иконок в могучем, широком мире Swing.
Мой JPG нормально загружается в других программах для просмотра изображений, так что это тоже исключено. У кого-нибудь есть идеи?
Заранее спасибо!
System.out.println("estimated number of bytes in the file = " + imgURL.openStream().available());
. - person toto2   schedule 25.08.2011available
не является надежным методом в соответствии с API, поэтому мы не можем сделать много выводов. Вы можете попробовать разделитьopenStream().avalaible()
на две разные строки, чтобы увидеть, откуда возникла ошибка. Я предполагаю, что ваше изображение в порядке, но не может быть найдено. Поскольку вы используете NetBeans, вы также можете ознакомиться с этим учебным пособием< /а>. - person toto2   schedule 25.08.2011