Forum
Tipps
News
Menu-Icon

Java - Bilder/Musik aus dem .jar File laden

Also wie das Betreff schon sagt, moechte ich aus dem ausfuehrendem .jar File, Dateien laden.
z.B. ein Icon oder eben Musik.

Hat irgendwer eine Idee, wie das funktionieren koennte?


Antworten zu Java - Bilder/Musik aus dem .jar File laden:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Probiers mal mit

URL myUrl = this.getClass().getResource("/pathto/myfile.ext");
und dann halt irgendwas zum Laden nehmen, das mit ner URL umgehen kann.

Danke, hab es ausprobiert. Ich kann mir Icons laden, und sie verwenden, mit Musik habe ich es noch nicht probiert, ist aber genau die selbe prozedur, also wird es da kein Problem geben.

Wobei mich noch eins Interessieren wuerde:
Wenn ich es wie oben angefuehr machen wuerde, dann muesste jedes Objekt es selbst neu laden, was aber wenn ich die Ressource statisch 1 mal Laden will, und dann alle drauf zu greifen, ist meiner Meinung nach etwas programmfreundlicher. 

« Letzte Änderung: 20.01.08, 22:52:46 von Fuxi »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Mach dir doch ein Icon-Objekt (z.B.) und das dann irgendwie global verfuegbar. Zum Bleistift ueber ne statische Wrapper-Klasse etc. Du musst ja nicht jedesmal wieder mit der URL usw. hantieren. Oder verstehe ich da jetzt was falsch?

Ich bin nicht sicher ob du es falsch verstanden hast oder nicht ;D.

Ich habe eine Art "statische Bibliothek", also in der Bibliothek speicher ich Sachen, die mehrere Klassen benoetigen.

z.B. bei Verbindungen die IPs/Ports, oder eben Icons.

Ich habe es so geloest dass ich der Bibliothek einen Konstruktor gab, der eben nur eines macht:

meinIcon = new ImageIcon(Toolkit.getDefaultToolKit().createImage(getClass().getResource("/pathto/myfile.ext"));
Wobei "meinIcon" ein statisches ImageIcon ist.
Der Konstruktor wird dann von dem "Main-Konstruktor" aufgerufen. 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ja, an sowas in der Art dachte ich. Allerdings haette ich das komplett statisch geloest:

public class MediaLibrary {
    private static final ImageIcon myIcon = new ImageIcon(
        Tooolkit.getDefaultToolKit().createImage(
        getClass().getResource( "/pathto/myfile.ext" ) );
   
    public static ImageIcon getIcon() {
        return myIcon;
    }
}
und dann kann man spaeter drauf zugreifen, ohne eine Instanz der Klasse anlegen zu muessen:
doSomethingWithTheIcon( MediaLibrary.getIcon() );

 

Okay, dann war mein Fehler dass ich annahm das getClass() auf das Objekt zugreift, und es somit X mal Verfuegbar ist, eben in dem aktuellen Objekt.

Reiner Denkfehler...

Wobei eins waere da noch, greift dann getClass() auf den Ordner im .jar File zu, in dem gerade die Klasse ist?.

Also ich meine Packages, wenn ich im Package "myPackage" getClass() mache, hab ich dann die Dateien vom Ordner myPackage, oder vom Hierachich hoechsten?

« Letzte Änderung: 22.01.08, 22:19:07 von Fuxi »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Bin mir nicht sicher, da ich das noch nie verwendet habe - aber ich wuerde mal stark vermuten, dass du die hoechste Ebene im .jar file kriegst. Wobei ich mich auch dunkel dran erinnern kann dass da irgendein Unterschied war, ob man am Anfang des Pfades ein / stehen hatte oder nicht (d.h. "/pathto/myfile" oder "pathto/myfile"). Vielleicht kriegt man im ersten Fall das toplevel Verzeichnis und im zweiten relativ zum aktuellen Package. Das sollte aber in der API-Doku stehen...


« Wie kann ich Programme selbst schreiben?Fahrstuhlprogramm »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Logfile
Eine Log-Datei ist eine Datei mit einer Art Protokoll, dass Aufschluss gibt über jegliche Aktivität auf einem Rechner. Das automatrisch geführte Protokoll ...

Dateiendungen
Die Dateiendung, auch Dateinamenerweiterung, Dateierweiterung oder einfach "Endung" genannt, besteht aus meistens drei oder vier Buchstaben und wird mit einem Punkt an de...

Dateiendung
Die Dateiendung ist ein Teil des Dateinamen und zeigt das Dateiformat an. Klassisch war die "8.3" Regelung, nach der der Dateiname under MS DOS 8 Zeichen lang sein durfte...