Свяжите путь с ImageIcon, который работает везде

#java #swing #jframe

#java #swing #jframe

Вопрос:

Недавно я написал программу в JFrame. Я использую static ImageIcon img = new ImageIcon("X:/workspace/eclipse/Timer5/rsc/icon.png"); и f1.setIconImage(img.getImage()); для отображения значка для JFrame. Моя проблема в том, что если программа экспортируется как выполняемая jar, путь на других компьютерах больше не работает, и на значке отображается стандартный значок Java.

Поскольку я могу указать такой путь logo = ImageIO.read(getClass().getResource("/logo.png")); g.drawImage(logo, 657, 640, 485, 85, null); в своем классе label (который расширяет JLabel), и он работает на других компьютерах или перемещаемых файлах, я хотел спросить, работает ли это также для значков изображений. Если я введу путь, как я это сделал, ImageIO.read() тогда значок не будет загружен.

Ответ №1:

Я хотел спросить, работает ли это также для значков изображений.

Прочитайте ImageIcon API.

Вы найдете конструктор, который принимает an Image в качестве параметра.

Так что да, вы можете и должны использовать этот getResource() метод:

 Image image = ImageIO.read(...);
ImageIcon icon = new ImageIcon( image );
JLabel label = new JLabel( icon );