Domanda

Ho una cartella chiamata Etc che ha un'immagine che voglio usare in un altro file nella stessa cartella, Esempio.java. Quindi ho Etc \ image.png ed Etc \ Example.java. Ho provato a utilizzare " Etc / image.png " come percorso dell'immagine, ma non ha funzionato. Come devo procedere?

Supponiamo inoltre che i file fossero in pacchetti diversi, come potrei farlo?

Le mie principali classi .java sono in un pacchetto chiamato Main, per la cronaca.

Modifica

Ho usato questo:

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

È stato utile?

Soluzione

È possibile utilizzare Class.getResource () , che utilizza il programma di caricamento classi per ottenere un URL per la risorsa. Ad esempio:

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 parte importante è Example.class.getResource (" image.png ") - il percorso dell'immagine è specificato in relazione alla classe nominata; in questo caso, si trova nella stessa directory del file di classe. Puoi anche utilizzare questa riga in qualsiasi altra classe, lasciando intatto il riferimento a Example.class .

Altri suggerimenti

Prima le prime cose.

Etc è un pacchetto? In altre parole nella parte superiore del tuo file di esempio hai un

pacchetto Etc;

???

Di solito i nomi dei pacchetti sono in minuscolo, motivo per cui chiedo.

In secondo luogo, sebbene sia possibile utilizzare percorsi relativi per accedere alle risorse, consiglierei di utilizzare sempre percorsi assoluti.

Quindi

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

se Etc è un pacchetto, altrimenti

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

se non lo è.

Perché funzioni, devi avere la directory in cui Etc è nel percorso di classe. Se è all'interno del barattolo, non ricordo se. funziona come un percorso di classe, in caso contrario, aggiungi Etc al percorso di classe e fai riferimento all'immagine senza il percorso di classe, oppure inserisci Etc in una sottodirectory. e metti quella sottodirectory nel percorso di classe.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top