Originariamente inviato da Fire Fox II
come da titolo, dovrei gestire il focus nelle tabelle in modo che alla pressione del tasto invio il cursore venga spostato nella cella adiacente in orizzontale e non in verticale com'è di default...
Nota che non ci sarebbe solo <invio> da trattare ma anche <shift+invio> che fa lo spostamento opposto.
codice:
InputMap im = tabella.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "selectNextColumnCell");
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, InputEvent.SHIFT_DOWN_MASK), "selectPreviousColumnCell");
Per chi vuole capire questo codice, bisogna andare ad ispezionare (con del proprio codice) il contenuto delle InputMap e della ActionMap e magari andare a "sbirciare" nei sorgenti del framework in javax.swing.plaf.basic.BasicTableUI.
Originariamente inviato da Fire Fox II
Inoltre selezionata una cella il contenuto dovrebbe essere già evidenziato in modo che digitando una nuova lettera venga cancellato il contenuto precedente...
Qui bisogna precisare: vuoi che il contenuto (testo o quello che è) sia "selezionato" (evidenziato con il colore tipico della selezione) quando si entra nella fase di "edit" della cella o solo quando la cella riceve il focus (es. appunto con ENTER/shift+ENTER)?
Sono due aspetti differenti.