J'ai une JTable qui démarre l'édition automatiquement lorsque vous appuyez sur une touche. Le texte déjà entré sera également supprimé, de sorte que si vous commencez à taper, seule votre saisie aura la valeur actuelle. Cela fonctionne, mais mon problème est que chaque touche commence cette édition, comme le verrouillage des majuscules, numlock, esc et des trucs comme ça. Comment puis-je exclure toutes les clés de contrôle de cette édition, sans les exclure une par une?Modification d'une entrée de table sur l'événement de clé
Voici le code que j'ai déjà. C'est dans la méthode isCellEditable dans TableCellEditor liée à la table.
// It's a keyevent, so check if it's a key that should start editing
if (anEvent instanceof KeyEvent) {
// Get the events key
int keyCode = ((KeyEvent) anEvent).getKeyCode();
char keyChar = ((KeyEvent) anEvent).getKeyChar();
// Convert character to lower case by first creating a string out of it
keyChar = ("" + keyChar).toLowerCase().charAt(0);
// F2 allowed
if (keyCode == KeyEvent.VK_F2) {
return true;
}
// Keycode is unknown so check if we can at least find the keyChar
if (keyCode == 0 && (keyChar == 'ä' || keyChar == 'ö' || keyChar == 'ü')) {
resetText = true;
return true;
}
// Control characters disallowed
if (keyCode < 32 || keyCode == KeyEvent.VK_WINDOWS
|| keyCode == KeyEvent.VK_CONTEXT_MENU || keyCode == KeyEvent.VK_SCROLL_LOCK
|| keyCode == KeyEvent.VK_NUM_LOCK || keyCode == KeyEvent.VK_META
|| (keyCode >= KeyEvent.VK_F1 && keyCode <= KeyEvent.VK_F12))
return false;
// all other keys are allowed
resetText = true;
return true;
}
Super, merci. Cela fonctionnera bien. – multiholle