У меня есть JTable, который автоматически начинает редактирование при нажатии клавиши. Уже введенный текст также будет удален, так что, если вы начнете печатать, только ваше печатание получит текущее значение. Это работает, но моя проблема в том, что каждый ключ запускает это редактирование, как capslock, numlock, esc и все в таком духе.
Как я могу исключить все виды управляющих клавиш из этого редактирования, не исключая одну за другой?
Вот код, который у меня уже есть. Он находится в методе isCellEditable в TableCellEditor, связанном с таблицей.
// 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;
}