Je vais avoir un JTable contenant les éditeurs JComboBox initialisés un peu commeJTable avec l'éditeur JComboBox: Est-il possible de modifier la valeur de la cellule du clavier avec une seule touche
JComboBox comboBox = ...;
TableColumn tc = table.getColumnModel().getColumn(i);
tc.setCellEditor(new DefaultCellEditor(comboBox));
Cela fonctionne bien autrement mais je aime pouvoir naviguer dans la table et mettre à jour les valeurs avec le clavier seulement. Maintenant c'est possible avec les combos, mais si je veux mettre à jour la valeur "1", je dois d'abord appuyer sur une touche pour activer la combo, puis appuyer sur "1" pour sélectionner l'élément. Donc, ce que je veux, c'est que je pourrais appuyer sur "1" et l'élément serait sélectionné avec une seule pression sur une touche.
Pour les cellules de texte que j'ai réussi à le faire avec prepareEditor comme suit ...
@Override
public Component prepareEditor(TableCellEditor editor, int row, int column) {
Component c = super.prepareEditor(editor, row, column);
if (c instanceof JTextComponent) {
((JTextComponent) c).selectAll();
}
return c;
}
... mais je ne l'ai pas réussi à comprendre ce qu'il faut faire avec la zone de liste déroulante.
Une possibilité pourrait être propre TableCellEditor mais s'il y a une solution plus simple qui serait bien =)
br, Touko
Vous pouvez toujours attraper vous-même les touches avec un KeyListener. Ou est votre question plus comment donnez-vous le focus approprié JComboBox une fois que vous savez quelle touche a été pressée. – Pace
Ou peut-être remplacer JTable # processKeyBinding ou JTable # processKeyEvent .. Je dois encore voir s'il y a une solution plus simple =) – Touko
Je sais que c'est une vieille question, mais je veux savoir comment les gens ont réussi à y parvenir. – Andree