Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: [JAVA] ImageIcon

  Alt 25. Mär 2007, 14:45
Zitat von Dunedain:
Ich habe ein ImageIcon, dessen Speicherort oder Dateinamen ich herausfinden muss.

Warum?
In einer Liste bestehen zwei Spalten nur aus ImageIcons.
Hi,
da stellt sich natürlich schon die Frage, wer die Liste füllt. Hast Du darauf Einfluss? Oder bekommst Du eine fertig gefüllte Liste und musst hier Icons vergleichen?

Zitat von Dunedain:
Leider hab ich keine Möglichkeit gefunden, die Dateinamen eines ImageIcon herauszufinden.

filename und location der ImageIcon.java sind private -_-
Auf die Eigenschaften kannst Du nicht zugreifen. Die sind (völlig zurecht) als privat deklariert. Das hat einen einfachen Grund, schau Dir einfach mal die Konstruktoren für ein ImageIcon an, da gibt es auch solche, die vollkommen ohne ein Dateinamen oder eine URL auskommen. Ändert also jmd. das Laden der ImageIcons ab, z.B. indem die Daten aus einem Archiv entnommen werden und direkt als Byte-Array übergeben werden, würdest Du weder die location noch den filename verwenden können. Die sind nur für das erstellen über eine Datei bzw. URL zuständig, was aber Implementierungsdetails sind, die nicht mit der Aufgabe eines ImageIcon zu tun haben!

Die Frage ist, wie man die ImageIcon Objekte erzeugt. In der Regel dürfte man hier auf das Singleton-Muster zurück greifen, man erzeugt also für jede Datei immer genau eine ImageIcon-Instanz. Die Liste wird dann nur mit Verweisen auf die jeweilige Instanz gefüllt. Damit spart man natürlich immens viele Ressourcen ein!
Ist dies der Fall, so sind hierüber einfache Vergleiche möglich (hier kannst Du wirklich direkt zwei Instanzen auf Gleichheit überprüfen). An sich kannst Du natürlich sogar soweit gehen und die Pixel (im Kontext des ColorModel) auf Gleichheit prüfen, aber das wäre wohl etwas übertrieben.

Am Einfachsten könntest Du allerdings die Überprüfung durchführen, wenn Du selbst Einfluss auf das Laden der ImageIcons Einfluss nehmen kannst. Hier könntest Du auf die ImageDecription zurückgreifen und etwas eindeutiges Eintragen oder einen Nachfahren der Klasse schaffen, der eine eindeutige Benennung speichert und über eine öffentliche Methode von außen lesbar macht.
Auf die privaten Variablen wird Du jedenfalls keinen Zugriff bekommen und wie gesagt, hier würdest Du ohnehin Gefahr laufen, dass Dein Programm inkorrekt arbeitet, sobald die ImageIcons nicht mehr aus einer Datei oder URL erzeugt werden würden.

Gruß Der Unwissende
  Mit Zitat antworten Zitat