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