【发布时间】:2018-01-04 18:42:44
【问题描述】:
我有一个JFrame,我想给它添加一个KeyListener,因为我想通过输入 alt + F11 来关闭它(我知道,你只需点击右上角,但我需要快捷方式是有原因的)。
所以我加了一个KeyListener:
addKeyListener(new KeyListener() {
@Override
public void keyPressed(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.VK_F11 && event.isAltDown()) {
dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
}
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
});
如您所见,我只需要keyPressed() 方法。但如果我删除 keyReleased() 和 keyTyped(),我会收到此错误:
类型 new KeyListener(){} 必须实现继承的抽象方法 KeyListener.keyReleased(KeyEvent)
有没有办法解决它,还是我真的必须添加这些未使用的方法?
提前致谢!
【问题讨论】:
-
"有没有办法绕过它,还是我真的必须添加这些未使用的方法?" - 这就是接口的工作方式。要么实现接口中定义的所有方法,要么使类抽象。你别无选择(除非接口定义了
default方法,而KeyListener没有)。您当然可以将未使用的方法留空。 -
你可以编写一个函数来创建并返回一个
KeyListener,它接受一个lambda并从KeyPressed调用它。虽然如果你不打算经常使用它,最好还是坚持界面希望你使用它的方式,反正它更灵活。 -
好的!谢谢!我应该忽略它...
标签: java keylistener