在我的主班里,我首先从创建Java框架开始。稍后,我从另一个名为“ keybinding”的类创建一个新对象,并将其传递给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");
最佳答案
KeyBinding类的参数应为
new KeyBinding(jf);
然后,KeyBinding类中的代码可以按如下方式访问框架:
public KeyBinding(JFrame frame)
{
JRootPane rootPane = frame.getRootPane();
rootPane.getInputMap(...)
}