2016-06-28 3 views
1

Ich habe eine JTable in meinem GUI. In unserem System gibt es verschiedene Registrar. Wenn ein Registrator Daten hinzufügt, werden diese Daten einer Zelle in der JTable hinzugefügt.Hinzufügen von zusätzlichen unsichtbaren Informationen zu jeder Zelle in der JTable

Wenn ich diese Daten einfach zur Tabelle hinzufüge, habe ich die Registrar-Informationen verloren, was sehr wichtig für weitere Operationen ist.

Was ich versuche zu tun ist, dass ich eine zusätzliche Information hinzufügen muss (wer diese Daten registriert hat) zu jeder Zelle in JTable, aber diese zusätzliche Information sollte nicht in der Tabelle gesehen werden.

Kurz. Wenn eine Zelle ausgewählt ist, sollte ich auf die Registrierungsinformationen zugreifen.

Ich weiß nicht, ob es möglich ist, etwas wie zu implementieren, aber jede Hilfe und Vorschläge werden geschätzt.

+0

'Was ich versuche zu tun ist, dass ich eine zusätzliche Information hinzufügen muss '- Frage, ist/sind diese Daten in' XxxTableModel' gespeichert (es kann nicht in 'JTables' angezeigt werden), sonst Sie stört mich mit *** – mKorbel

+0

Allerdings hat jede Zelle eine andere Daten. Es ist mehr oder weniger wie 'HashMap'. Der Wert in der Zelle ist eine Art Schlüssel, die Registerinformation für diese spezifische Zelle ist wie ein Wert. Weil die Tabelle, die ich verwende, eine sehr dynamische Tabelle ist und sich ständig selbst ändert. Aus diesem Grund sollten diese Daten miteinander verknüpft sein. –

+0

ok das ist deine entscheidung, keine ahnung dafür, warum es zwei modelle gibt (könnte sehr wichtig sein, wenn content dynamik ist), dann unter der annahme, dass AbstractTableModel auf dieser HashMap basiert, tipp - benutze today array - Liste/LinkedList, Rest ist sehr gut beschrieben in Antwort von @trashgod (wie immer :-) – mKorbel

Antwort

3

Ein Appproach wäre, die zusätzlichen Details in einem Tooltip anzuzeigen. Der Artikel How to Use Tables: Specifying Tool Tips for Cells enthält ein vollständiges Beispiel, das zeigt, wie der QuickInfo-Text für jede Zelle geändert wird. Sie könnten die Registrierungsinformationen in Ihrem TableModel behalten und in Ihrem TableCellRenderer über den table Parameter sehen, der von getTableCellRendererComponent() gesehen wird. Alternativ kann es in einem TablePopupEditor, gesehen here angezeigt werden.

+0

Vielen Dank für Ihre Antwort. Eigentlich war mein Problem viel schwieriger als ich hier geschrieben habe. Aus diesem Grund habe ich mein Problem anders gelöst. Ich akzeptiere dies als Lösung, weil ich denke, dass es eine gute Lösung für das ist, was ich hier geschrieben habe. –

+0

@AdInfinitum: Ich bin froh, dass Sie es sortiert haben; ping mich hier, wenn Sie auch [Ihre eigene Frage beantworten] (http://meta.stackoverflow.com/q/17463/163188), und ich werde entsprechend aktualisieren. – trashgod

+0

Hauptsächlich habe ich 'Map >' verwendet. 'Integer' repräsentiert hier die Indizes (erste Zeile = 0, zweite Zeile = 1 und geht so weiter) in der Tabelle und Liste enthält die Zellen (Registrar-Info), die zu dem entsprechenden Index gehört. Wenn ein Benutzer eine Zelle bearbeiten möchte, bekomme ich aus der Zeilennummer die entsprechende Liste von der Karte und erhalte unter Verwendung der Spaltennummer die Registrar-Information aus der Liste. –

Verwandte Themen