Как изменить значок приложения по умолчанию в Java?
Я использую NetBeans, пытаясь изменить знакомый значок Java coffee cup на файл 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 пакет, если это имеет какое-либо значение. Этот класс также расширяет форму. Этот код вызывает исключение MalformedUrlException в первой строке.
у кого-нибудь есть решение, которое работает?
9 ответов:
java.net.URL url = ClassLoader.getSystemResource("com/xyz/resources/camera.png");
может или не может требовать '/' в передней части пути.
вы можете просто перейти в Netbeans, в режиме конструктора перейдите в
JFrame
свойство, выберите свойство изображения значка, выберите Установить форму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);
Это то, что я использовал в GUI в 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);