Comment arrêter l'édition avec DefaultCellEditor lorsqu'un JBtton séparé est pressé
-
22-08-2019 - |
Question
Je suis une table avec un TableCellEditor personnalisé (extension DefaultCellEditor) avec un JFormattedTextField comme composant de l'éditeur.
Maintenant, je suis arrivé problème: quand j'appuie sur un bouton séparé lors de l'édition. Lorsque le bouton est enfoncé, l'éditeur reste « ouvert et actif » alors que je veux arrêter l'édition afin que les modifications apportées seraient disponibles pour les opérations causées par le bouton.
Alors, comment provoquer la modification d'être arrêté quand un bouton distinct est pressé. J'ai essayé setFocusLostBehavior (JFormattedTextField.COMMIT) pour JFormattedTextField mais il ne semble pas avoir d'effet.
quelqu'un Hope a de bonnes idées =)
La solution
Vous pouvez essayer
jtable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
Autres conseils
Merci asalamon74, qui fonctionne très bien.
débat Il sur la chose à Sun Bug Base de données: Bug 4724980: JTable: Ajouter API pour contrôler ce qui se passe aux modifications lorsque la table perd le focus. (également d'autres entrées de bogues sont trouvés). Le terminateEditOnFocusLost tourne sur le comportement "commit-ou annuler" qui peut être vu aux sources Java à la classe JTable $ CellEditorRemover
Et oui, il est un peu étrange qu'il ne soit pas documenté les API etc ...
Il y avait aussi des questions plus avec ces choses, voir la question