按CTRL +鼠标滚轮将缩放

Gal*_*sin 4 java keyboard swt canvas

当我同时按下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));

                                    }
                                }

                            }
                        });

} 
}
Run Code Online (Sandbox Code Playgroud)

小智 8

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

addMouseWheelListener(new MouseWheelListener() {

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