Вам нужно поместить файл изображения в файл JAR, а затем использовать метод getResource()
из java.lang.Class
, чтобы получить URL, который ссылается на файл, который находится в файле JAR;прямо сейчас ваш код загружает файл изображения непосредственно из вашей файловой системы, а не из файла JAR.
Строка, которую вы передаете getResource()
, зависит от того, где вы поместили его в файл JAR.Если класс, делающий это, является классом Foo
в пакете com.acme.bar
, вы можете поместить capture.gif
в тот же подкаталог com\acme\bar\
файла JAR (в том же каталоге, что и класс Foo
), и сделать
JButton capturebut = new JButton(new ImageIcon(Foo.class.getResource("capture.gif")));
Это связано с тем, что вызов getResource()
для класса с относительным именем (не начинающийся с /
) будет искать ресурс в том же каталоге, где находится файл класса для этого класса.
С другой стороны, вы можете создать подкаталог resources\images
в корне файла JAR и вместо "capture.gif"
использовать "/resources/images/capture.gif"
.Если имя начинается с '/', поиск начинается с корня файла JAR, а не относительно того, где находится файл класса.