2011-11-01 19 views
5

Se qualcuno modifica il contenuto della cella di una tabella e premere Invio, il contenuto viene modificato e la selezione della tabella passa alla riga successiva.Come mantenere JTable sulla cella modificata

E 'possibile a vietare a JTable di passare alla riga successiva dopo un'edizione cella?

Il motivo è che il mio programma sincronizza alcuni altri widget sulla selezione cella utilizzando ListSelectionListener e non voglio che la riga successiva venga selezionata dopo aver modificato la cella corrente.

risposta

7

Il bind predefinito per Immettere è il Action denominato selectNextRowCell. Per sovrascrivere la voce nella mappa di input , è necessario fornire un doNothing()Action, come suggerito in How to Use Key Bindings: How to Make and Remove Key Bindings.

+0

Ottimo suggerimento! Il lavoro completo da fare è aggiungere una chiamata a table.getCellEditor(). StopCellEditing(); nel metodo actionPerformed (...). Senza questa chiamata, la cella rimane in modalità di edizione quando l'utente preme Invio. – Martin

+0

Buon punto; vedere anche [Utilizzo di un editor per convalidare il testo inserito dall'utente] (http://download.oracle.com/javase/tutorial/uiswing/components/table.html#validtext). – trashgod

1

Non sono sicuro di come eseguire esattamente questa operazione, ma vorrei esaminare ActionMap. Dovresti essere in grado di modificare o sostituire l'Azione mappata sul tasto "Invio".

Buona fortuna!

Problemi correlati