Question

J'ai un dossier appelé Etc qui contient une image que je souhaite utiliser dans un autre fichier du même dossier, Example.java. J'ai donc Etc \ image.png et Etc \ Example.java. J'ai essayé d'utiliser " Etc / image.png " comme le chemin de l'image, mais cela n'a pas fonctionné. Comment dois-je m'y prendre?

Supposons également que les fichiers se trouvent dans des packages différents, comment procéderais-je?

Mes principales classes .java sont dans un package appelé Main, pour l'enregistrement.

EDIT:

J'ai utilisé ceci:

ClassLoader.getSystemClassLoader (). getResource ("Etc \ image.png");

Était-ce utile?

La solution

Vous pouvez utiliser Class.getResource () , qui utilise le chargeur de classes pour obtenir une URL vers la ressource. Par exemple:

import java.net.URL;
import javax.swing.ImageIcon;

public class Example {

    public ImageIcon getImage() {
        URL url = Example.class.getResource( "image.png" );
        if( url != null ) {
            return new ImageIcon( url );
        }
        return null; // TODO: Better error handling
    }

}

La partie importante est Example.class.getResource (" image.png ") - le chemin de l'image est spécifié par rapport à la classe nommée; dans ce cas, il se trouve dans le même répertoire que le fichier de classe. Vous pouvez également utiliser cette ligne dans n’importe quelle autre classe, en laissant la référence à Example.class intacte.

Autres conseils

Premières choses d'abord.

Est-ce que Etc est un paquet? En d'autres termes, en haut de votre fichier exemple, avez-vous un

package Etc;

???

Généralement, les noms de paquetages sont en minuscule, c'est pourquoi je vous le demande.

Deuxièmement, bien que vous puissiez utiliser des chemins relatifs pour accéder aux ressources, je vous recommande de toujours utiliser des chemins absolus.

Alors

URL url = Example.class.getResource ("/Etc/image.png");

si Etc est un package, sinon

URL url = Example.class.getResource ("/image.png");

si ce n'est pas le cas.

Pour que cela fonctionne, vous devez avoir le répertoire où Etc est dans le chemin de classe. Si c'est à l'intérieur du pot, je ne me souviens pas si. fonctionne comme un chemin de classe, sinon, ajoutez Etc au chemin de classe et référencez l'image sans le chemin de classe, ou mettez Etc dans un sous-répertoire. et mettez ce sous-répertoire dans le chemin de la classe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top