Tengo un proyecto de Java con una barra de herramientas, y la barra de herramientas tiene iconos en él. Estos iconos se almacenan en una carpeta llamada recursos /, por lo que la ruta podría ser "resources/icon1.png". Esta carpeta se encuentra en mi directorio src, por lo que cuando se compila, la carpeta se copia en bin/¿Cómo acceder a los recursos en el archivo JAR?
Estoy usando el siguiente código para acceder a los recursos.
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 será "recursos/icon1.png", etc). Esto funciona bien cuando se ejecuta en Eclipse. Sin embargo, cuando exporto un JAR ejecutable desde Eclipse, no se encuentran los íconos.
Abrí el archivo JAR y la carpeta de recursos está allí. He intentado todo, moviendo la carpeta, alterando el archivo JAR, etc., pero no puedo mostrar los íconos.
¿Alguien sabe lo que estoy haciendo mal?
(Como una pregunta complementaria, ¿hay algún monitor de archivos que pueda funcionar con archivos JAR? Cuando surgen problemas de ruta, suelo abrir FileMon para ver lo que está pasando, pero simplemente aparece como accediendo al archivo JAR en este caso)
Gracias.
Entonces, ¿5 líneas de código para cargar el ícono son mejores, luego 2 líneas de código?Por supuesto, para descubrir el secreto para usar 2 líneas de código, en realidad tendrías que leer por tu cuenta. Supongo que el secreto permanecerá oculto. – camickr