schumy2000 ha scritto:
Adesso ho provato a mettere la cartella img sotto bin e solo in quel caso mi prende...
E così ovviamente funziona, è una soluzione troppo elaborata.
Sotto 'bin' non dovresti mettere nulla in modo diretto ... è la destinazione del build.
Se le tue "risorse" (immagini, testi, ecc...) sono parte "fissa" della tua applicazione, allora dovranno essere incorporate insieme al resto del programma. Quindi finiranno di norma insieme alle classi nello stesso jar.
Pertanto è bene che le risorse siano sotto 'src' (e un IDE di norma ribalta le risorse sotto 'bin') e preferibilmente in un sotto-package specifico. Una buona soluzione (che ho usato anch'io più volte) è avere un package apposito es.
com.pincopalla.resource
e dentro metterci le tue risorse (immagini, testi, ecc....) e poi (ora viene il bello), mettere in questo package anche una semplice classe di utility del tipo:
package com.pincopalla.resource;
// import necessari .....
public class AppResources {
private AppResources() {}
public static Icon getIcon(String name) {
URL url = AppResources.class.getResource(name);
return new ImageIcon(url);
}
}
e poi da qualunque altra parte es.
Icon fooIcon = AppResources.getIcon("foo.png");
Siccome la specifica "foo.png" non inizia con "/" e siccome il getResource è sul Class di AppResources che è nello
stesso package delle risorse .... allora funziona bene e sempre.
E in questo modo si incapsula pure e quindi si tiene nascosto all'esterno tutti i dettagli di
dove sono le risorse e
come vengono caricate.