Java: Jede Art und Weise, ein Objekt über eine Komponente irgendwo in der Komponente squirreling?

StackOverflow https://stackoverflow.com/questions/227249

  •  03-07-2019
  •  | 
  •  

Frage

Als Followup auf meine Frage nach dem java.awt.Component .getName () Eigenschaft , ich frage mich, ob es eine Möglichkeit ist ein beliebiges Objekt irgendwo in einer Komponente von squirreling, ähnlich wie die Tag-Eigenschaft in .NET ? Dies würde für jeden Code wirklich praktisch sein, die auf eine Komponente funktioniert aber nicht unbedingt wissen, was diese Komponente ist.

Zum Beispiel, sagt Ich versuche, ein anwendungsweite Hilfesystem zu implementieren, die zur Zeit an einem beliebigen Komponente zu suchen wissen von der Maus zeigte auf, erreichen in diese Komponente und ziehen Sie es den Hilfetext und zeigt sie in einem eigenen Fensterbereich auf dem Bildschirm (nein, ich will nicht einen Tooltip verwenden). Meine Antwort zur Zeit ist den Namen (getName () / setName ()) zu verwenden, um den Hilfetext zu speichern, und dies funktionieren wird, aber der Name hat eine Zeichenfolge sein. Wenn ich wollte schicker bekommen und alles speichern andere als eine Zeichenfolge, ich glaube, ich stecken würde.

War es hilfreich?

Lösung

Ich schaffe im Allgemeinen einen Hash und setzen (Komponente, Cookie), wenn ich eine Komponente zum Bildschirm hinzuzufügen. Wenn Sie Ihr Cookie-Objekt zurück benötigen (in einem Fall vielleicht), wird das Ereignis immer eine Kopie der Komponente, und dann sind Sie nur eine get (Komponente) weg von Ihrem Cookie.

In einigen extremen Bedingungen habe ich die Kontrolle subclassed und habe soeben ein Feld. Es ist eine quick and dirty fix, da die Komponente Subklassen wie ein paar Zeilen Code und die Datei in der gleichen Klasse gehen kann, wo Sie Ihren Bildschirm zu erzeugen. Dies ist nur dann sinnvoll, wenn Sie nur Ihre Daten auf eine einzige Art von Steuerung angeschlossen speichern müssen.

Andere Tipps

JComponent hat putClientProperty und getClientProperty.

Die Komponente hat keine Möglichkeit, dies zu tun. Eine Möglichkeit wäre jedoch, eine statische Karte verwenden und einen Wrapper um sie, so dass Sie für Daten in Bezug auf jede UI (oder anderes) Objekt abfragen. Ich habe diese Art der Sache vorher getan und so lange, wie Sie es einrichten mit Schnittstellen als eine Art Service, kann es ziemlich elegant sein und bricht nicht Ihre OO-Design.

Ja, könnte man die get / setName verwenden eine Art Kennung zu setzen, verwenden Sie dann die Kennung für die Zuordnung zu Ihrer Hilfe. die Javahelp CSH Sachen bisschen wie das, mit der Ausnahme, dass Werke, die ich glaube, das ist die Komponente selbst in eine Karte setzen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top