Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [JAVA] ImageIcon (https://www.delphipraxis.net/89024-%5Bjava%5D-imageicon.html)

Dunedain 24. Mär 2007 20:34


[JAVA] ImageIcon
 
Hab mal wieder en kleines Java Problem.

Ich habe ein ImageIcon, dessen Speicherort oder Dateinamen ich herausfinden muss.

Warum?
In einer Liste bestehen zwei Spalten nur aus ImageIcons. Die kann man ja nicht miteinander vergleichen (zum sortieren), deshalb wollte ich die Dateinamen vergleichen, wodurch sich die Icons leicht unterscheiden ließen. Leider hab ich keine Möglichkeit gefunden, die Dateinamen eines ImageIcon herauszufinden.

filename und location der ImageIcon.java sind private -_-

Hat jemand ne Idee wie ich an den Namen komme???

Der_Unwissende 25. Mär 2007 13:45

Re: [JAVA] ImageIcon
 
Zitat:

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:

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

Dunedain 25. Mär 2007 14:40

Re: [JAVA] ImageIcon
 
Hallo,

nein, ich habe nur indirekten Einfluss auf die Icons in der Liste. Die Liste stellt einen Verzeichnisinhalt dar: Name, Größe, letzte Änderung, Lesen- & Schreibrechte, das OS Icon für die Datei, die OS Beschreibung für die Datei und noch andere Werte.

Mir ging es darum, nach der Spalte der OS Icons sortieren zu können. Werde das jetzt aber anders lösen, da die Beschreibung des Dateityps für die jeweiligen Icons gleich ist, werde ich für das sortieren nach den OS Icons einfach nach der Beschreibung des Dateityps sortieren.

Zitat:

Zitat von Der_Unwissende
...man erzeugt also für jede Datei immer genau eine ImageIcon-Instanz...

Hat mich mal eben auf nen bösen Programmierfehler aufmerksam gemacht :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz