Ho un progetto Java con una barra degli strumenti e la barra degli strumenti contiene icone. Queste icone sono memorizzate in una cartella chiamata resources /, quindi ad esempio il percorso potrebbe essere "resources/icon1.png". Questa cartella si trova nella mia directory src, quindi quando viene compilata la cartella viene copiata in bin/Come accedere alle risorse nel file JAR?
Sto usando il seguente codice per accedere alle risorse.
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 sarà "resources/icon1.png" ecc.). Funziona bene quando eseguito in Eclipse. Tuttavia, quando esporto un JAR eseguibile da Eclipse, le icone non vengono trovate.
Ho aperto il file JAR e la cartella delle risorse è lì. Ho provato di tutto, spostando la cartella, alterando il file JAR, ecc, ma non riesco a far apparire le icone.
Qualcuno sa cosa sto sbagliando?
(Come domanda a parte, c'è un monitor di file che può funzionare con file JAR? Quando si verificano problemi di percorso di solito apro FileMon per vedere cosa sta succedendo, ma si presenta semplicemente come accesso al file JAR in questo caso)
Grazie.
Quindi 5 righe di codice per caricare l'icona sono migliori, quindi 2 righe di codice?Ovviamente per scoprire il segreto dell'utilizzo di 2 linee di codice dovresti effettivamente fare un po 'di lettura da solo. Immagino che il segreto rimarrà nascosto. – camickr