Come interrompere la modifica con DefaultCellEditor quando viene premuto un JBtton separata
-
22-08-2019 - |
Domanda
Ho una tabella con un TableCellEditor personalizzato (che si estende DefaultCellEditor) con un JFormattedTextField come componente dell'editor.
Ora ho problema: quando si preme un pulsante separato durante l'editing. Quando si preme il pulsante, l'editor rimane "aperta e attiva", mentre io vorrei che smettesse di modifica in modo che le modifiche apportate sarebbero disponibili per le operazioni causate dalla tasto.
Così come causare la modifica di essere fermato quando si preme un tasto distinta. Ho provato a setFocusLostBehavior (JFormattedTextField.COMMIT) per il JFormattedTextField ma non sembrano avere effetto.
La speranza qualcuno ha qualche buona idea =)
Soluzione
Si può provare
jtable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
Altri suggerimenti
Grazie asalamon74, che funziona molto bene.
c'è dibattito sulla cosa alla Sun Database dei bug: Bug 4.724.980: JTable: Aggiungi API per controllare ciò che accade alle modifiche quando la tabella perde lo stato attivo. (anche altre voci di bug si trovano). La terminateEditOnFocusLost accende comportamento "commit-or-cancel" che può essere visto alle sorgenti di Java alla classe di JTable $ CellEditorRemover
E sì, è un po 'strano che non è documentato presso le API ecc ...
ha avuto anche più problemi con queste cose, vedi la domanda Java swing: cambiare la selezione JTree mentre editingstopCellEditing (): come arrivare stopCellEditing () chiamato prima TreeListeners:? valueChanged