Passer a la cellule de droite dans une JTable

chmurbluk Messages postés 3 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 19 juillet 2002 - 19 juil. 2002 à 18:16
alexlens19 Messages postés 2 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 3 avril 2006 - 3 avril 2006 à 11:54
Dans une JTable, apres la validation d'une cellule en edition par la touche Enter, la nouvelle cellule selectionnee est la cellule du dessous alors que je voudrais que ce soit celle de droite qui soit selectionnee.

JE SUIS VRAIMENT BLOQUE !!!
MERCI DE VOTRE AIDE !!!

3 réponses

JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
13 sept. 2002 à 15:46
1)Capture l'événement j'appuie sur entrer, cad, je valide une cellule.
table.getCellEditor().addCellEditorListener
(
new CellEditorListener()
{
public void editingStopped(ChangeEvent e)
{
edition(e);
}

public void editingCanceled(ChangeEvent e)
{
}
}
);

2)Crée la méthode public void edition(ChangeEvent e)
{
int lig=table.getSelectedRow();
int col=table.getSelectedColumn();
lig++;
if(col>=table.getColumnCount())
{
col=0;
lig++;
if(lig>=table.getRowCount())
lig=0;
}
table.editCellAt(lig,col);

}

Et voilà
:)
JHelp
0
barnab17 Messages postés 1 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 8 juin 2004
8 juin 2004 à 14:40
Je me suis inspiré de ton code pour réliser une action comparable, mais de mon côté la commande tablEeditCellAt() genere un evenement editingStopped

As tu eu le même problème ?

Merci
0
alexlens19 Messages postés 2 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 3 avril 2006
3 avril 2006 à 11:54
Voici une solution qui fonctionne pour moi:

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));
javax.swing.UIManager.put("Table.ancestorInputMap", inputMap);

KeyStroke tab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);
KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);

inputMap.put(enter, inputMap.get(tab));

En fait, j'associe le fonctionnement de la touche tabulation à la touche ENTER.
0