В моем основном классе я сначала начинаю с создания фрейма Java. Позже я создаю новый объект из другого класса под названием «привязка клавиш» и передаю ему JFrame. Затем он применяет карты действий для определенных клавиш к корневой панели JFrame.
Раньше я писал это приложение в образовательной IDE BlueJ, где этот код работал нормально. Но я в процессе переноса его на обычную IDE, в данном случае на JDeveloper. Весь код работает, кроме этой привязки клавиш.
В приведенном ниже коде с использованием JDev вызов getRootPane() возвращает значение null.
Stage.java
jf = new JFrame("The Title");
jf.setSize(800,600);
//etc
Keybinding keys = new Keybinding(this);
Keybinding.java
KeyStroke pressLeft = KeyStroke.getKeyStroke("LEFT");
stage.jf.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(pressLeft, "pressLeft");