java如何ctrl加滚轮鼠标事件_如何使用InputMap捕获CTRL mouseWheel事件

我已经为使用InputMap的Swing应用程序实现了一些热键

getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_A,Event.CTRL_MASK),"selectAll");

getActionMap().put("selectAll",new SelectAllAction());

它工作正常.现在,如果我想赶上,我怎么能做同样的事情

CTRL + MouseWheelUp

我尝试了一些组合,比如

getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(MouseEvent.MOUSE_WHEEL,"zoom");

没有运气

谢谢

您不能使用InputMap / ActionMap.您需要使用MouseWheelListener.然后,侦听器可以从ActionMap访问自定义Action.这是一个使用“Control 1”进行KeyStroke的简单示例:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class MouseWheelTest extends JPanel implements MouseWheelListener {

private final static String SOME_ACTION = "control 1";

public MouseWheelTest() {

super(new BorderLayout());

JTextArea textArea = new JTextArea(10,40);

JScrollPane scrollPane = new JScrollPane(textArea);

add(scrollPane,BorderLayout.CENTER);

textArea.addMouseWheelListener(this);

Action someAction = new AbstractAction() {

public void actionPerformed(ActionEvent e) {

System.out.println("do some action");

}

};

// Control A is used by a text area so try a different key

textArea.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)

.put(KeyStroke.getKeyStroke(SOME_ACTION),SOME_ACTION);

textArea.getActionMap().put(SOME_ACTION,someAction);

}

public void mouseWheelMoved(MouseWheelEvent e) {

if (e.isControlDown()) {

if (e.getWheelRotation() < 0) {

JComponent component = (JComponent)e.getComponent();

Action action = component.getActionMap().get(SOME_ACTION);

if (action != null)

action.actionPerformed( null );

} else {

System.out.println("scrolled down");

}

}

}

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {

@Override

public void run() {

createAndShowGUI();

}

});

}

private static void createAndShowGUI() {

JFrame frame = new JFrame("MouseWheelTest");

frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);

frame.add( new MouseWheelTest() );

frame.pack();

frame.setLocationRelativeTo( null );

frame.setVisible(true);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值