java - 按 CTRL + 鼠标滚轮将缩放

标签 java canvas keyboard swt

当我同时按下 CTRL + 滚动鼠标滚轮时,它起作用了 但是当我释放 CTRL 键并继续滚动时它仍然有效。 我希望它仅在 CTRL 和鼠标滚轮同时滚动时起作用。

addKeyListener(new KeyListener() {

            @Override
            public void keyPressed(KeyEvent e) {    


               addMouseWheelListener(new MouseWheelListener() {

                            @Override
                            public void mouseScrolled(MouseEvent g) {
                            if(e.keyCode == SWT.CTRL){
                                if(g.count > 0){
                                    System.out.println("up");
                                    int width = getSize().x;
                                    int height = getSize().y;

                                    setSize((int)(width * 1.05), (int)(height * 1.05));


                                }
                                else {
                                    System.out.println("down"); 

                                    int width = getSize().x;
                                    int height = getSize().y;

                                    setSize((int)(width * 0.95), (int)(height * 0.95));

                                    }
                                }

                            }
                        });

} 
}

最佳答案

您不必添加 KeyListener。只需检查滚动时按下的键盘按钮的状态掩码。状态掩码在 MouseScrolled 方法的 MouseEvent 参数中传递。

addMouseWheelListener(new MouseWheelListener() {

    @Override
    public void mouseScrolled(MouseEvent g) {
        if((g.stateMask & SWT.CONTROL) == SWT.CONTROL) {
            performZoom(g.count);
        }
    }
});

关于java - 按 CTRL + 鼠标滚轮将缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33034853/

相关文章:

java - 将数据解析回 mainPanel (java/swing)

windows-phone-7 - Windows Phone 7 键盘尺寸

reactjs - 键盘在 Android 上打开并立即消失

java - Android从SD卡上读取文件

java - 如何创建正则表达式来替换已知字符串,同时保持可选参数不变?

javascript - 不了解此 Canvas 代码的工作原理

javascript - 如何控制 Canvas 对象的 z-index?

java - 我需要阻止某些键序列的发生

java - Lambda 'special void-compatibility rule' - 语句表达式

javascript - HTML Canvas : Multiple getContext plotting at same time