# Standard Icons wo findet man diese?



## BlubBlub (8. Okt 2010)

Hi,

ich versuche grad einen kleinen Editor zu programmieren 
und wollte die Untermenues wie "Datei Speichern" etc mit Icons
versehen. Für "Datei speichern" würd ich gern ein Diskettensymbol nehmen
und für "Datei drucken" ein Druckersymbol.
Weiß jemand wo es diese Icons gibt und ob sie vielleicht auch in Java irgendwie schon eingebunden sind oder so?


----------



## Marco13 (8. Okt 2010)

Ein paar gibt's hier Java look and feel Graphics Repository


----------



## Hemme (8. Okt 2010)

Hier vielleicht auch : Tango Icon Library - Tango Desktop Project


----------



## BlubBlub (8. Okt 2010)

Habe mir jetzt die "Java look and feel Graphics Repository " runtergeladen und entpackt.
Dort war eine jar Datei drinne.
Wo muss ich diese Datei denn jetzt genau hinlegen, könnt ihr mir da ne genaue step by step anleitung geben.
Und wie füge ich dann anschließend ein Icon in mein Programm ein?


----------



## L-ectron-X (8. Okt 2010)

Zum Thema "Wo gibts Icons?"
Forumsuche: http://www.java-forum.org/buecher-tutorials-links/5136-icon-sammlung-besten-links-netz.html

Die Icons müssen im Classpath liegen.
Eingebunden werden sie dann in etwa so:

```
private JMenuItem openItem;
[...]

   openItem = new JMenuItem("Öffnen...", new ImageIcon(getClass().getResource("/icons/open.jpg"));
```


----------



## BlubBlub (9. Okt 2010)

und wo finde ich den ordner classpath?


----------



## Gast2 (9. Okt 2010)

Der Classpath ist KEIN Ordner 
Classpath (Java) - Wikipedia, the free encyclopedia

Ne Menge icons kann man auch hier finden:
Iconfinder | Search and download free icons


----------



## L-ectron-X (9. Okt 2010)

Der Link wird auch in der Icon-Sammlung aufgeführt... ^^


----------



## BlubBlub (9. Okt 2010)

also ich hab mir jetzt ein paar inetseiten durchgelesen zu dem thema.
versteh ich das jetzt richtig, dass wenn ich eine JAR Datei in dasselbe Verzeichnis lege
in dem sich auch mein Programm befindet ich nichts weiter tun muss?


----------



## L-ectron-X (9. Okt 2010)

Nicht ganz. Du musst in der Manifest-Datei deiner Jar-Datei folgendes einfügen, sofern das dein Editor bzw. deine IDE nicht machen:

```
Class-Path: FremdeJarDatei.jar
```

Eigentlich macht das jede ordentliche IDE, wenn man das in den Projkteinstellungen vorsieht.

Die von dir angedeutete Vorgehensweise hat den Vorteil, dass die fremden Jar-Dateien austauschbar bleiben.


----------



## z-mon (9. Okt 2010)

Hi BlubBlub,

ich kann dir nicht mehr die Referenz sagen wo ich die Icons gefunden habe, aber ich habe sie mal in meinem Blog hochgeladen.

http://www.itblogging.de/wp-content/uploads/2010/10/index_abc.png

Ich denke da wirst du mehr als genug Icons finden. Mir hat die Iconlist zumindest immer gute Dienste erbracht. 

Viel Spaß damit,
Simon


----------



## L-ectron-X (9. Okt 2010)

Das sind die FamFamFam-Icons. Auch in der Icon-Sammlung zu finden...


----------



## z-mon (9. Okt 2010)

L-ectron-X hat gesagt.:


> Das sind die FamFamFam-Icons. Auch in der Icon-Sammlung zu finden...



Gut zu wissen ... ist nämlich schon ne zeitlang her als ich mir die mal abgespeichert habe


----------



## BlubBlub (9. Okt 2010)

uff ich muss ehrlich sagen ich fühl schon ein wenig überfordert was die jar datei einfügen betrifft und dann den entsprechenden icon in das programm einbinden.

hab aber zwei seiten gefunden die man sich so als anfänger durchlesen kann für einen kleinen überblick, nur so falls jemand auch die schwierigkeiten hat wie ich:
Kurzinformationen zur Programmiersprache Java < Homepage < AG Softwaretechnik Wiki
Klassenpfad ? Wikipedia

also ich wollte jetzt einfach mal versuchen nur die jar datei in das selbe verzeichnis zu legen (mit der hoffnung, dass der rest ganz automatisch geht, wenn nicht probier ich das natürlich anders mit euren genannten vorschlägen nur überfordern die mich momentan noch ein wenig)

nur jetzt steh ich vor noch einem weiteren problem. also L-ectron-X hat zwar gepostet wie man sie einbindet, aber ich frage mich grad woher weiß ich welchen namen welches icon hat? 
genauer gesagt woher weiß ich was in getClass().getResource("/icons/open.jpg") stehen muss. also dort wo jetzt "/icon/open.jpg". wie erfahr ich welchen string das druckersymbol beispielsweise hat oder die speicherdiskete?

ich will dieser jar datei verwenden Java look and feel Graphics Repository


----------



## z-mon (9. Okt 2010)

BlubBlub,

wenn du die .jar richtig eingebunden hast sollte dir dieses Beispiel weiterhelfen können:


```
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class Tester extends JFrame
{

	public Tester()
	{
		setTitle("www.itblogging.de");

		JMenu menu = new JMenu("Testmenü");
		JMenuBar bar = new JMenuBar();
		JMenuItem item = new JMenuItem("Hallo Icon", new ImageIcon(Tester.class.getResource("/toolbarButtonGraphics/development/Bean24.gif")));

		menu.add(item);
		bar.add(menu);

		setJMenuBar(bar);

		setSize(400, 300);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}

	public static void main(String[] args)
	{
		new Tester();
	}

}
```

EDIT: Die Namen der Icons solltest du natürlich kennen. 
Wenn du sie per Java ansprechen willst könntest du dir entsprechende wrapper Klassen bauen.


----------



## L-ectron-X (9. Okt 2010)

BlubBlub hat gesagt.:


> aber ich frage mich grad woher weiß ich welchen namen welches icon hat?
> genauer gesagt woher weiß ich was in getClass().getResource("/icons/open.jpg") stehen muss. also dort wo jetzt "/icon/open.jpg". wie erfahr ich welchen string das druckersymbol beispielsweise hat oder die speicherdiskete?


Dazu kannst du die Jar-Datei mit einem Packprogramm öffnen und dir die Dateien ansehen.
Du gibst dann in deinem Programm nur den relativen Pfad zu deiner gewünschten Grafikdatei aus deiner Jar-Datei an.

Könnte in deinem Fall dann also so aussehen:

```
saveItem = new JMenuItem("Speichern", new ImageIcon(getClass().getResource("/toolbarButtonGraphics/general/Save24.gif"));
```


----------



## BlubBlub (10. Okt 2010)

Also, ich habs jetzt geschafft die jar Datei zu entpacken um zu sehen welches Icon welche Bezeichnung trägt.
Ich hab jetzt einfach das entsprechende gif Bild rauskopiert und in mein Programm eingefügt das klappt auch alles super. 
Nur bin ich grad interessiert daran zu erlernen wie ich das ohne die jar Datei zu entpacken schaffen kann.

Ich hab die jar Datei in das selbe Verzeichnis gelegt indem auch meine Programm ist.
Leider meckert das Programm dann bei der Ausführung und gibt mir eine Null Pointer Exception


```
//JMenuItem fileOpen = new JMenuItem("Datei öffnen...", new ImageIcon(getClass().getResource("/toolbarButtonGraphics/general/Open16.gif")));

         JMenuItem fileOpen = new JMenuItem("Datei öffnen...", new ImageIcon(MyEditor.class.getResource("/toolbarButtonGraphics/general/Open16.gif")));
```

Also werd ich das jetzt mal so versuchen:


> L-ectron-X :     Nicht ganz. Du musst in der Manifest-Datei deiner Jar-Datei folgendes einfügen, sofern das dein Editor bzw. deine IDE nicht machen:
> Class-Path: FremdeJarDatei.jar



Dazu muss ich die JAR Datei erstmal entpacken dann die Manifest-Datei in eine Textdatei umwandeln.
Anschließend Class-Path: jlfgr-1_0.jar hineinschreiben und die Textdatei wieder in den ursprünglichen Dateityp umwandeln. Das krieg ich hin.
Aber wie verpacke ich denn wieder die einzelnen Ordner wieder zu einer JAR Datei das krieg ich nicht hin.


----------



## Marcinek (10. Okt 2010)

Entpacke die JarDatei nicht.

Öffne sie mit winzip, winrar oder sowas.

Edietiere die manifest-Datei.

Dann wird dein ZIP Programm die Datei im Archiv ersetzen.

Hoffe du hast es richtig verstanden und setzt den Classpath in DEINER Jar Datei, so dass DEIN Programm weiß, welche externen Ressourcen noch geladen werden müssen.

Alternativ kann man auch mit java -cp ./externeJar.jar  verwenden.


----------



## L-ectron-X (10. Okt 2010)

BlubBlub hat gesagt.:


> Aber wie verpacke ich denn wieder die einzelnen Ordner wieder zu einer JAR Datei das krieg ich nicht hin.


Das Jar-Dateiformat ist Zip-kompatibel. Du kannst es also mit einem beliebigen Packprogramm öffnen/ansehen.
Wie schon von Marcinek angedeutet, brauchst du die Icons nicht entpacken. Du kannst die Manifestdatei direkt im Packprogramm editieren.


----------



## BlubBlub (10. Okt 2010)

also mir rar kann ichs öffnen und anschauen, aber nicht editieren.
nagut aber ich hab auch rausgefunden wie ich die jar datei entpacke,
dann die datei in eine textdatei umwandel diese editiere dann wieder zurückwandel
und anschließend wieder in eine jar datei verpacke, das geht mit rar auch.



> Hoffe du hast es richtig verstanden und setzt den Classpath in DEINER Jar Datei, so dass DEIN Programm weiß, welche externen Ressourcen noch geladen werden müssen.



In MEINER Jar Datei??? Ich hab doch nur die eine JAR Datei die ich runtergeladen habe mit den Icons.



> Alternativ kann man auch mit java -cp ./externeJar.jar verwenden.


Wo muss ich das denn eingeben? 
Muss das unter Start => Programme => Zubehör => Eingabeaufforderung 
eingegeben werden?
Oder kommt das in die java Datei also in den Sourcecode?

Hab übrigens noch eine alternative gefunden wie man eine JAR Datei einbinden kann nämlich wenn man unter eclipse folgendes macht:
Rechtsklick auf die Projektdatei => Build Path => Add External Archives
wobei das Programm dann nicht mehr Portabel wäre da sich dieser Pfad ja nur auf den Quellrechner bezieht.


----------



## Gastredner (10. Okt 2010)

BlubBlub hat gesagt.:


> Hab übrigens noch eine alternative gefunden wie man eine JAR Datei einbinden kann nämlich wenn man unter eclipse folgendes macht:
> Rechtsklick auf die Projektdatei => Build Path => Add External Archives
> wobei das Programm dann nicht mehr Portabel wäre da sich dieser Pfad ja nur auf den Quellrechner bezieht.


Wenn du dein Projekt anschließend als runnable Jar exportierst, dann bietet die Eclipse automatisch an, die referenzierten Bibliotheken mit in dein Jar zu packen, wodurch das exportierte Jar vollkommen portabel ist.
Empfehlen würde ich dir folgendes: Lege in deinem Projekt einen Ordner "lib" an. In diesen Ordner kopierst du alle von dir benötigten Bibliotheken und fügst sie dem Build Path hinzu. Beim Exportieren kannst du sie dann einfach deinem exportierten Jar hinzufügen. Alternativ könntest du auch die Bibliotheken _nicht_ in dein Jar packen lassen und stattdessen neben deinem Jar den lib-Ordner mit ausliefern. Dabei musst du allerdings das Manifest deiner Jar editieren, sodass sie dem Classpath die Bibliotheken im externen lib-Ordner hinzufügt.


----------

