JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
и JComponent.WHEN_IN_FOCUSED_WINDOW
имеют значение для ввода ввода. Итак, вы хотите, чтобы получить их обоих
Исправление: Вам нужно получить InputMap
для WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
InputMap iMap1 =
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
//InputMap iMap2 =
// table.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
Затем вы хотите, чтобы установить значение для отображения на "none"
, вместо null
, как описано в How to Use Key Bindings.
Чтобы компонент игнорировал ключ, на который он обычно отвечает, вы можете использовать специальное действие «none». Например, следующий код заставляет компонент игнорировать клавишу F2.
component.getInputMap().put(KeyStroke.getKeyStroke("F2"), "none");
Так просто сделать:
KeyStroke stroke = KeyStroke.getKeyStroke("ENTER");
iMap1.put(stroke, "none");
//iMap2.put(stroke, "none");
Кроме того, обратите внимание, когда вы просто делаете getInputMap()
без каких-либо аргументов, это в основном то же самое, как getInputMap(JComponent.WHEN_FOCUSED)
. И в случае JTable
нет значения для ввода ввода для этого InputMap
.
Подробнее на How to Use Key Bindings.Вы получите лучшее объяснение различных InputMaps
UPDATE: Исправление (исправления, сделанные выше либо зачеркнут// commented out
или)
Вы только установить его для InputMap
для JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
ОБНОВЛЕНИЕ за OP co Закоментировать: Да короче
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
.put(KeyStroke.getKeyStroke("ENTER"), "none");
Подводя итог: 'table.getInputMap (JComponent. WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) .put (KeyStroke.getKeyStroke ("ENTER"), "none"); 'выполняет задание. Благодаря! –