Image aus einer .jar auslesen

HISTORY

Mitglied
Hallo zusammen

Ich bin im Internet leider nicht fündig geworden und deshalb frage ich mal euch.

Wie kann ich ein Bild (Image) aus einer .jar auslesen und dann als Icon meiner Anwendung setzten?

Java:
public void assignIcon() {
	  try {
	    Image img = getToolkit().getImage("Icons/icon.png");
	    MediaTracker mt = new MediaTracker(this);
	    
	    mt.addImage(img, 0);
	    setIconImage(img);
	    
	  } catch (NullPointerException npe) {
	    npe.printStackTrace();
	  }
		
	}

Ich wäre dankbar für eine schnelle Hilfe.
PS: Ich weis, dass das kein richtiges Icon ist, denn ein Icon hat selbst eine Dateiendung.

mfg HISTORY
 

Lukas_H

Grünschnabel
Ich habe deinen code genauso ausprobiert, und er funktioniert bei mir einwandfrei.
Du hast doch sicher winrar installiert oder ?
Dann mach mal Rechtsklick auf die .jar Datei -> öffnen mit -> WinRAR.
Dann solltest du deine .class Datei(en) sehen, sowie den Icons Ordner, in welchem dann deine icon.png drin ist. Sollte dem nicht der Fall sein, einfach am Desktop einen Ordner erstellen, das Bild in den Ordner speichern und einfach per drag-and-drop in winrar reinziehen

PS: des try-catch kannst du dir sparen, denn selbst wenn dein Image-Objekt null wird, wird bei den anderen methoden keine Exception auftreten...
 

HISTORY

Mitglied
Danke Lukas_H

Ich werde es morgen versuchen. Bin gerad am IPone.
Habe vom quellcode nur die alte version zu haus werde es mir aber zusammenflicken.


mfg HISTORY
 

HISTORY

Mitglied
Bei mir gehts nicht. Wie komme ich in mein .jar file rein?
Angenommen ich hätte den Ordner auf dem Desktop funktioniert es.
Mein Ziel wäre das alles in die .jar zu legen, dass bei dem öffnen des Programms die Icons immer dabei sind.

Wie kann ich das machen?

PS: sobald ich zu hause bin lad ich das Programm + Quellcode auf meine Homepage. <-- This site is under construction (bitte nicht mehr als eine h1 und ein paar links erwarten).
So könnt ihr das programm ansehen und viellcht noch ein paar tipps geben ;-)

mfg HISTORY
 
Zuletzt bearbeitet:

Akeshihiro

Erfahrenes Mitglied
Deine Jar mit den Icons muss natürlich im Classpath liegen (die Icons entweder in der selben Jar, wie die Anwendung, oder die Jar mit den Icons im Classpath verfügbar machen (in MANIFEST.MF eintragen oder über JVM-Parameter -cp/-classpath)), sonst weiß deine Anwendung doch gar nicht, wo es die hernehmen soll. Du kannst die Icon-Jar auch zur Laufzeit dynamisch nachladen lassen über den URLClassLoader, aber das wäre wohl Quatsch, außer du willst zur Laufzeit dein Icon-Set komplett neu laden.
 

HISTORY

Mitglied
Die Icons Liegen in der. jar.

meine .jar | -- main (package).....| -- MainFrame (Klasse)
.................|............................| -- DeInstallation
.................|
................ | -- narchrichten (package) -- (Weitere Klassen)
.................|-- stoppUhr (package) -- (Weitere Klassen)
.................|-- taschenrechner (package) -- (Weitere Klassen)
.................|-- Icons (Ordner) | -- Icon1
...........................................| -- Icon2

so sieht es auch in eclipse aus.
Wie soll ich das im Manifest eintragen?
Wie kann ich in die .jar Referenzieren

mfg HISTORY
 
Zuletzt bearbeitet:

Akeshihiro

Erfahrenes Mitglied
Wenn die in der selben Jar liegen, dann brauchst du nix machen. Dann liegt das an dem Pfad, über den du versuchst die Bilder zu laden. Der ist in deinem Beispiel relativ und das heißt, dass in einem falschen Ordner geschaut wird. Füg noch ein Slash (/) am Anfang hinzu, dann sollte das gehen.

Java:
public void assignIcon() {
      try {
        Image img = getToolkit().getImage("/Icons/icon.png");
        MediaTracker mt = new MediaTracker(this);
        
        mt.addImage(img, 0);
        setIconImage(img);
        
      } catch (NullPointerException npe) {
        npe.printStackTrace();
      }        
}
 

HISTORY

Mitglied
Hallo zusammen und Danke Akeshihiro

Leider funktioniert das ganze noch nicht.
Wie versprochen lade ich verspätet mein Programm hoch.
Darunter ist wie es aussehne sollte. Und mein aktueller Sourcecode <-- ev. Altlasten vorhanden.

Da ich nicht weiss ob ich hier ausser Bilder noch Dateien hochladen kann, habe ich es auf meiner hp platziert. <-- Nicht auf die Rechtschreibung achten^^ http://history.square7.ch/tutorialsde.html

Keine spiele Links und Popups anklicken. --> (Es ist ein gratis Hoster)

mfg HISTORY
 

sheel

I love Asm
Wenn du (im erweiterten Antwortfenster) auf das Büroklammersymbol klickst
kannst du es hier raufladen.
 

Akeshihiro

Erfahrenes Mitglied
Lade die Icons lieber so:
Java:
Image img = new ImageIcon(getClass().getResource("/Icons/icon.png")).getImage();
Damit sparst du dir auch den Kram mit dem MediaTracker, das übernimmt ImageIcon beim Laden.
 
Zuletzt bearbeitet von einem Moderator: