Frage

Ich habe einen Ordner mit dem Namen usw., die ein Bild habe ich in einer anderen Datei im selben Ordner, Example.java verwenden möchten. So habe ich Etc \ image.png und Etc \ Example.java. Ich habe versucht, „Etc / image.png“ als Bildpfad verwendet wird, aber das hat nicht funktioniert. Wie soll ich über diese gehen?

Auch an, dass die Dateien in unterschiedlichen Paketen waren, wie würde ich es tun?

Mein Haupt .java- Klassen sind in einem Paket namens Main, für das Protokoll.

EDIT:

Ich habe diese:

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

War es hilfreich?

Lösung

Sie können mit Class.getResource(), die den Klassenlader verwendet eine URL zu der Ressource zu erhalten. Zum Beispiel:

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
    }

}

Der wichtigste Teil ist Example.class.getResource( "image.png" ) - der Bildpfad relativ zu der genannten Klasse spezifiziert ist; in diesem Fall ist es im selben Verzeichnis wie die Klassendatei. Sie könnten auch diese Zeile in einer anderen Klasse verwenden, die Referenz zu verlassen intakt Example.class.

Andere Tipps

Das Wichtigste zuerst.

Ist Etc ein Paket? Mit anderen Worten: an der Spitze Ihrer Beispieldatei haben Sie ein

Paket Etc;

???

In der Regel Paketnamen sind Kleinschreibung, weshalb ich frage.

Zweitens, obwohl Sie relative Pfade für den Zugriff auf Ressourcen verwenden können, würde ich immer mit absoluten Pfaden empfehlen.

So

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

wenn Etc ist ein Paket, sonst

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

, wenn es nicht ist.

Um das zu umgehen, müssen Sie das Verzeichnis, in dem Etc in dem Classpath ist. Wenn es in dem Topf ist, erinnere ich mich nicht, wenn. arbeitet als Classpath, wenn nicht, fügen usw. zu dem Classpath, und verweisen Sie auf das Bild, ohne die Classpath oder setzen usw. in einem Unterverzeichnis. und bring dieses Unterverzeichnis im Klassenpfad.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top