java - 我们可以使用 KeyListener 实现 KeyBindings 吗?

标签 java swing keylistener key-bindings

只是感兴趣的问题,KeyListener 是否有一种方法可以完成与KeyBindings 相同的工作,我的意思是重写keyListener 的 方法( s) 并监听多个键 (CTRL+somekey)。

我知道,这是个愚蠢的想法,但正如我所说,这只是一个兴趣问题。

最佳答案

你可以通过使用一个标志来做到这一点:

KeyListener kl = new KeyListener() {

    boolean controlPressed = false;
    @Override
    public void keyTyped(KeyEvent e) {
    }

    @Override
    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_CONTROL) {
            controlPressed = true;
            return;
        }

        if(controlPressed) {
            // CTRL is pressed, you can check here for other keys:
            if(e.getKeyCode() == KeyEvent.VK_A) {
                //CTRL + A was pressed
            }
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_CONTROL) {
            controlPressed = false;
        }
    }
};

正如 camickr 在评论中指出的,另一种方法是使用 KeyEvent 中的 isControlDown 方法:

if(e.isControlDown()) {
    //CTRL is pressed
}

关于java - 我们可以使用 KeyListener 实现 KeyBindings 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18622981/

相关文章:

java - 在 Java 中嵌入 Gecko/WebKit

java - 在 Java 中移动对象(KeyPressed)

java - 在我的 Kafka SpringBoot 应用程序的 @PostConstruct 方法中拆分数组时遇到问题

java - 如何让 Maven 站点描述符部署到 Artifactory?

java - @Autowiring 在现场级别不起作用

java - JScrollPane 的默认设置是什么

java - 第二个 JFrame 中的组件未显示

JFrame 中的 Java 移动问题

java - 图形 g - 使用绘画,如何删除内容?

java - 获取两个日期之间的日期列表有错误