2008-12-18 6 views
5

J'ai obtenu une table avec un TableCellEditor personnalisé (extension DefaultCellEditor) avec un objet JFormattedTextField comme composant de l'éditeur.Comment arrêter l'édition avec DefaultCellEditor lorsqu'un bouton JBtton distinct est enfoncé

Maintenant j'ai un problème: quand j'appuie sur un bouton séparé pendant l'édition. Lorsque le bouton est pressé, l'éditeur reste "ouvert et actif" alors que je voudrais qu'il arrête d'éditer afin que les changements effectués soient disponibles pour les opérations provoquées par le bouton.

Comment faire pour que l'édition soit arrêtée quand un bouton distinct est pressé. J'ai essayé setFocusLostBehavior (JFormattedTextField.COMMIT) pour le JFormattedTextField mais cela n'a pas semblé avoir d'effet.

quelqu'un Hope a de bonnes idées =)

Répondre

12

Vous pouvez essayer

jtable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);

+0

Où est-ce documenté? –

+0

Je ne sais pas. J'ai peur que ce soit assez non documenté. :( – asalamon74

3

Merci asalamon74, qui fonctionne très bien.

Il ya un débat sur la chose à la base de données Sun Bug: Bug 4724980: JTable: Add API to control what happens to edits when table loses 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 .. .

+0

La date de soumission du débat est le 01-AOÛT 2002. Il s'agit donc d'un long problème, mais pas encore vraiment documenté. – asalamon74

Questions connexes