2011-01-11 7 views
0

Ich habe eine JTable mit benutzerdefiniertem Editor und Renderer. Ich habe auch mein Tabellenmodell. Ich möchte ein spezielles Eingabefenster instanziieren, wenn der Benutzer auf eine Zelle einer bestimmten Spalte klickt. Ich habe die Logik in isCellEditable() geschrieben, aber jetzt ist das Problem, dass, wenn ich auf eine Zelle dieser spezifischen Spalte klicke, das Eingabefenster erscheint, dann gebe ich meinen Wert ein, bis jetzt alles gut funktioniert. Aber jetzt, wenn ich versuche, die Spaltenposition durch Ziehen der Kopfzeile zu verschieben, wird erneut isCellEditable() aufgerufen und ohne dass ein Benutzer auf die Zelle dieser bestimmten Spalte klickt, erscheint das Fenster. Bitte geben Sie an, wie Sie zwischen einem Benutzer klicken und Spalten ziehen unterscheiden können.Wie unterscheidet man zwischen dem Aufruf von isCellEditable() aufgrund eines Benutzerklicks oder aufgrund einer Spaltenverschiebung?

Grüße Krishna

Antwort

0

obwohl ich war nicht in der Lage, eine Antwort auf meine Frage zu finden, aber ich habe meine Aufgabe gelöst. Ich schrieb alle meine Logik der Instanziierung des komplexen Fensters in meiner Klasse: CustomCellRenderer, getTableCellEditorComponent(). Mein CustomCellRenderer erweitert DefaultCellEditor. Der einzige Fehler, den ich machte, war das setValueAt() des Tabellenmodells in der Logik aufzurufen. Später fand ich, dass ich die Möglichkeit hatte, den Wert der Komponente in getTableCellEditorComponent() selbst festzulegen. Später wird dieselbe Komponente zurückgegeben.