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 =)

Était-ce utile?

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

scroll top