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

È stato utile?

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 ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top