У меня есть проект Java с панелью инструментов, и на панели инструментов есть значки на нем. Эти значки хранятся в папке с именем resources /, поэтому, например, путь может быть «resources/icon1.png». Эта папка находится в моей директории src, поэтому, когда она скомпилирована, папка скопирована в bin/Как получить доступ к ресурсам в JAR-файле?
Я использую следующий код для доступа к ресурсам.
protected AbstractButton makeToolbarButton(String imageName, String actionCommand, String toolTipText,
String altText, boolean toggleButton) {
String imgLocation = imageName;
InputStream imageStream = getClass().getResourceAsStream(imgLocation);
AbstractButton button;
if (toggleButton)
button = new JToggleButton();
else
button = new JButton();
button.setActionCommand(actionCommand);
button.setToolTipText(toolTipText);
button.addActionListener(listenerClass);
if (imageStream != null) { // image found
try {
byte abyte0[] = new byte[imageStream.available()];
imageStream.read(abyte0);
(button).setIcon(new ImageIcon(Toolkit.getDefaultToolkit().createImage(abyte0)));
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
imageStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} else { // no image found
(button).setText(altText);
System.err.println("Resource not found: " + imgLocation);
}
return button;
}
(imageName будет «resources/icon1.png» и т. Д.). Это отлично работает при запуске в Eclipse. Однако, когда я экспортирую исполняемый JAR из Eclipse, значки не найдены.
Я открыл файл JAR и папка с ресурсами. Я пробовал все, перемещая папку, изменяя файл JAR и т. Д., Но я не могу заставить значки отображаться.
Кто-нибудь знает, что я делаю неправильно?
(Как вопрос, есть ли какой-либо монитор файлов, который может работать с файлами JAR? Когда возникают проблемы с путями, я обычно просто открываю FileMon, чтобы посмотреть, что происходит, но он просто появляется как доступ к файлу JAR в этом случае)
спасибо.
Так что 5 строк кода для загрузки значка лучше, а затем 2 строки кода?Конечно, чтобы узнать секрет использования двух строк кода, вам действительно нужно будет самостоятельно почитать. Я думаю, секрет останется скрытым. – camickr