Ответ 1
java.net.URL url = ClassLoader.getSystemResource("com/xyz/resources/camera.png");
Может или не может потребоваться '/' в начале пути.
Я использую NetBeans, пытаясь изменить знакомый значок чашки кофе Java на файл png, который я сохранил в каталоге ресурсов в файле jar. Я нашел много разных веб-страниц, которые утверждают, что у них есть решение, но пока никто из них не работает.
Вот то, что у меня есть на данный момент (исключая блок try-catch):
URL url = new URL("com/xyz/resources/camera.png");
Toolkit kit = Toolkit.getDefaultToolkit();
Image img = kit.createImage(url);
getFrame().setIconImage(img);
Класс, содержащий этот код, находится в пакете com.xyz, если это имеет значение. Этот класс также расширяет JFrame. Этот код генерирует исключение MalformedUrlException в первой строке.
У кого-нибудь есть решение, которое работает?
java.net.URL url = ClassLoader.getSystemResource("com/xyz/resources/camera.png");
Может или не может потребоваться '/' в начале пути.
Вы можете просто запустить Netbeans в представлении проекта, перейдите в свойство JFrame
, выберите свойство изображения значка, выберите свойство Set Form iconImage
, используя: "Пользовательский код", а затем в функции Form.SetIconImage()
введите следующие код:
Toolkit.getDefaultToolkit().getImage(name_of_your_JFrame.class.getResource("image.png"))
Не забывайте импортировать:
import java.awt.Toolkit;
в исходном коде!
Или поместите изображение в местоположение относительно класса, и вам не нужна вся информация об этом пакете/пути в самой строке.
com.xyz.SomeClassInThisPackage.class.getResource( "resources/camera.png" );
Таким образом, если вы переместите класс в другой пакет, вам не нужно будет найти все строки, просто переместите класс и его каталог ресурсов.
Попробуйте эту запись после
initcomponents();
setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("Your image address")));
/** Creates new form Java Program1*/
public Java Program1()
Image im = null;
try {
im = ImageIO.read(getClass().getResource("/image location"));
} catch (IOException ex) {
Logger.getLogger(chat.class.getName()).log(Level.SEVERE, null, ex);
}
setIconImage(im);
Это то, что я использовал в графическом интерфейсе в netbeans, и он отлично работал
В классе, который расширяет метод использования javax.swing.JFrame
setIconImage
.
this.setIconImage(new ImageIcon(getClass().getResource("/resource/icon.png")).getImage());
Вы должны определить значки различного размера, дистрибутивы Windows и Linux, например, Ubuntu используют разные значки на панели задач и Alt-Tab.
public static final URL ICON16 = HelperUi.class.getResource("/com/jsql/view/swing/resources/images/software/bug16.png");
public static final URL ICON32 = HelperUi.class.getResource("/com/jsql/view/swing/resources/images/software/bug32.png");
public static final URL ICON96 = HelperUi.class.getResource("/com/jsql/view/swing/resources/images/software/bug96.png");
List<Image> images = new ArrayList<>();
try {
images.add(ImageIO.read(HelperUi.ICON96));
images.add(ImageIO.read(HelperUi.ICON32));
images.add(ImageIO.read(HelperUi.ICON16));
} catch (IOException e) {
LOGGER.error(e, e);
}
// Define a small and large app icon
this.setIconImages(images);
Пример:
URL imageURL = this.getClass().getClassLoader().getResource("Gui/icon/report-go-icon.png");
ImageIcon iChing = new ImageIcon("C:\\Users\\RrezartP\\Documents\\NetBeansProjects\\Inventari\\src\\Gui\\icon\\report-go-icon.png");
btnReport.setIcon(iChing);
System.out.println(imageURL);
внутри конструктора фрейма
try{
setIconImage(ImageIO.read(new File("./images/icon.png")));
}
catch (Exception ex){
//do something
}
Вы можете попробовать этот, он работает просто отлично:
' ImageIcon icon = new ImageIcon(".//Ressources//User_50.png");
this.setIconImage(icon.getImage());'