gpt4 book ai didi

java - JPanel 中 Escape 的 KeyListener

转载 作者:行者123 更新时间:2023-12-02 11:55:28 27 4
gpt4 key购买 nike

我在 JFrame 中有一个 JPanel,想要为 Escape 按钮创建一个 KeyListener。我已经使用了按钮的 ActionListeners 和 MouseListener,它们都可以工作。我不知道为什么 KeyListener 不起作用。该面板中没有其他内容,因此该面板应重点关注。我还尝试了 e.getKeyCode() 或 e.getKeyChar() 以及除 Escape 之外的其他键的几种组合。

public GamePanel(GameState gameState, Window window) {
game = gameState;
myWindow = window;
renderer = new Renderer();
setFocusable(true);
addMouseListener(this);
addKeyListener(new KeyListener() {
@Override
public void keyPressed(KeyEvent e) {
if( e.getKeyCode() == KeyEvent.VK_ESCAPE) {
System.out.println("escape");
}

}

@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub

}

@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub

}
});
add(renderer);
setLayout(null);
setBackground(Color.CYAN);
setPreferredSize(new Dimension(8000, 600));


timer = new Timer(20, this);
timer.start();
}

最佳答案

您可以为整个帧注册 Escape 键的监听器。

Action action = ...;
String name = "Escape"; // I think the exact name doesn't matter
JComponent pnl = frame.getRootPane();
KeyStroke keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
pnl.getActionMap().put(name, action);
pnl.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(keyStroke, name);

关于java - JPanel 中 Escape 的 KeyListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47636223/

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