gpt4 book ai didi

java - KeyListener 不会对键盘事件使用react。鼠标事件正常

转载 作者:行者123 更新时间:2023-12-01 23:17:30 27 4
gpt4 key购买 nike

JPanel 对事件的 react 非常奇怪。它可以处理 MouseEvent,但不能处理 KeyEvent。

JPanel 类:

public class DrawPanel extends JPanel {
class DrawListener extends MouseAdapter implements KeyListener {
@Override
public void mouseDragged(MouseEvent e) {
// works fine
}
@Override
public void mouseReleased(MouseEvent e) {
// works fine
}
@Override
public void mouseClicked(MouseEvent e) {
// works fine
}
@Override
public void keyPressed(KeyEvent e) {
// Listener is NOT invoked here if anykey is pressed
}
@Override
public void keyReleased(KeyEvent e) {
// NOT invoked
}
@Override
public void keyTyped(KeyEvent e) {
// NOT invoked
}

面板的构造函数:

// Class constructor
public DrawPanel() {
DrawListener l = new DrawListener();
addMouseListener(l);
addMouseMotionListener(l);
addKeyListener(l);
setFocusable(true);
requestFocus();
}

如果 MouseEvent 处理程序工作正常,这怎么可能?哪里可能出错了?

最佳答案

KeyListener 仅当其注册的组件可聚焦且具有键盘焦点时才会响应按键事件。

这是 KeyListener 的一个已知问题。

最好的选择是使用 Key Bindings API它允许您控制关键事件发生的焦点级别。

关于java - KeyListener 不会对键盘事件使用react。鼠标事件正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21007061/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com