Ich möchte ein MouseEvent in meinem NatTable für alle Zellen implementieren, die über die ComboBoxCellEditor-Klasse implementiert werden. Wenn ein einzelner Klick auf das Kombinationsfeld erfolgt, sollte das Dropdown-Feld mit den Einträgen geöffnet werden. Daher habe ich in meiner UiBindingRegistry eine FirstSingleClickBinding registriert.Warum kann ich CellEditorMouseEventMatcher nicht mit einem bestimmten CellEditor in Java NatTable implementieren?
Ich benutzte den BodyCellEditorMouseEventMatcher und es funktionierte perfekt. Aber da dieser Matcher veraltet ist, möchte ich ihn nicht mehr verwenden. Es heißt also, dass ich den CellEditorMouseEventMatcher verwenden sollte, den ich ausprobiert habe, aber es funktioniert nicht so, wie ich es erwarte. Die Dokumentation der CellEditorMouseEventMatcher sagt der folgende:
Implementierung von {@link IMouseEventMatcher}, die, wenn Bearbeitung
* überprüfen werden sollte aktiviert werden. Dazu ist es möglich, die Region Label
* reagieren auf die Maustaste, um anzugeben, der verwendet wurde klicken und wenn ein Redakteur
* registriert für die Zelle ist, auf dem die Maus Klick ausgeführt wurde. Wenn keine Region
* Label angegeben ist, wird nur die Maus Schaltfläche und das Vorhandensein eines Zelleneditors
* ausgewertet.
Aber ich kann keinen Zelleditor als Parameter verwenden, was bedeutet der letzte Satz? Ich habe nur die Möglichkeit, eine Schaltfläche und/oder eine Regionsbezeichnung als Parameter anzugeben. Wie kann ich mit diesem EventMatcher das gleiche Ergebnis erzielen wie mit dem BodyCellEditorMouseEventMatcher? Ich benutze verschiedene Arten von Zellen, so dass es wichtig ist, dass nur die Combo-Boxen dieses Verhalten bekommen.
Hier ist meine „veraltet“ Code:
private void editCombosOnSingleClick(final UiBindingRegistry uiBindingRegistry) {
uiBindingRegistry.registerFirstSingleClickBinding(new BodyCellEditorMouseEventMatcher(ComboBoxCellEditor.class),
new MouseEditAction());
}
Wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen. Danke :)
Vielen Dank für Ihre schnelle Antwort! Tatsächlich sind fast alle Zellen, die ich benutze, editierbar. Aber ich möchte nicht, dass die normalen Zellen jedes Mal, wenn Sie darauf klicken, in den "Bearbeitungsmodus" gelangen (und ich würde die Auswahlereignisse meines Erachtens überschreiben). Alle Kombinationsfelder haben diesen kleinen Pfeil auf der rechten Seite, der ihre Einträge öffnet.Ich möchte genau dasselbe Verhalten, wenn Sie einfach auf sie klicken (Sie müssen also nicht auf den Pfeil "zielen"). Weißt du, wie ich das schaffen kann? – mkaay
Das ist das Standardverhalten. Keine Notwendigkeit, etwas Besonderes dafür zu tun. –
Oh ... so etwas in meinem Code überschreibt diese Funktionalität ... Vielen, vielen Dank! :) – mkaay