按CTRL +鼠标滚轮将缩放

时间:2015-10-09 09:37:41

标签: 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));

                                    }
                                }

                            }
                        });

} 
}

3 个答案:

答案 0 :(得分:7)

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

{{1}}

答案 1 :(得分:0)

以下是在按下JTextArea时使用mousewheel缩放CTRL的示例代码:

sourceCodeArea.addMouseWheelListener(mouseWheelEvent ->
{
    if (mouseWheelEvent.isControlDown())
    {
        int scrolled = mouseWheelEvent.getUnitsToScroll();
        Font font = sourceCodeArea.getFont();
        int fontSize = font.getSize();
        fontSize += -(scrolled / 3);
        Font newFont = new Font(font.getFontName(), font.getStyle(), fontSize);
        sourceCodeArea.setFont(newFont);
    }
     else
    {
        sourceCodeArea.getParent().dispatchEvent(mouseWheelEvent);
    }
});

答案 2 :(得分:0)

textArea.addMouseWheelListener(mouseWheelEvent -> {
        if (mouseWheelEvent.isControlDown()) {
            textArea.setFont(new Font(
                    textArea.getFont().getFontName(),
                    textArea.getFont().getStyle(),
                    mouseWheelEvent.getUnitsToScroll() > 0
                    ? textArea.getFont().getSize() - 2
                    : textArea.getFont().getSize() + 2));
        }
    });