Salut,

Je ne suis pas le seul à vouloir faire une Jtable qui réagit à la touche entrée, j'ai trouvé pleins d'exemple, des bouts de code mais je n'arrive pas à avoir ce que je veux pour autant.

J'ai refait un exemple tout simple une frame un panel et un tableau avec un écouteur, mais la où ca ne fonctionne pas.
Lorsqu'on appuie sur enter avec le focus sur la première cellule le focus va bien sur la seconde ou on peu saisir etc... mais lorsqu'on "enter" sur cette cellule(la seconde), on retourne sur la précédente au lieu d'aller sur la +1. Bref ca boucle sur deux cellules.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
 
 
public class Main {
 
	public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run(){            	
            	balance();
 
            }
        });        
    }
	private static void balance(){
		//Enleve le comportement de la touche entrée
        javax.swing.InputMap inputMap = (javax.swing.InputMap)javax.swing.UIManager.get("Table.ancestorInputMap");
        inputMap.remove(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ENTER, 0));
 
		JFrame frame = new JFrame();
    	JPanel panel = new JPanel();
 
    	Object[][] contenu = {{"","","",""},
    			{"","","",""}};
    	String[] colonnes = {"a","b","c","d"};
 
    	final JTable table = new JTable(contenu,colonnes);
 
    	//L'ecouteur 
        table.addKeyListener(new KeyAdapter() {
             public void keyPressed(KeyEvent e){
                  if (e.getKeyCode() == KeyEvent.VK_ENTER  ){
                       table.editCellAt(table.getSelectedRow(),table.getSelectedColumn()+1);
                       table.getEditorComponent().requestFocus();                                              
                   }
               }
            });
 
    	panel.add(new JScrollPane(table));
    	frame.add(panel);
    	frame.setVisible(true);
    	frame.pack();
	}	
}
En m'aidant vous aidez tous ceux qui ont ce problème car je vous promet de mettre le code corrigé et fonctionnel de cet exemple dès qu'il sera terminé (ce n'est pas une promesse de politicien). A moins qu'il n'y ait déjà un tuto complet qui m'aurait échappée, à ce moment là je mettrai simplement le lien.

Merci