怎样监听全局快捷键,就像QQ一样按 "Ctrl+Alt+z "组合键就显出界面的。
我尝试过添加:
Toolkit toolkit = Toolkit.getDefaultToolkit();
toolkit.addAWTEventListener(new testListener(), AWTEvent.KEY_EVENT_MASK);
监听:
class testListener implements AWTEventListener {
public void eventDispatched(AWTEvent event) {
if(){Do}
}
}
可是怎么样都捕捉不出 "Ctrl+F9 ",最多捕捉到F9。
疑问有二:
1.监听全局是不是错了?
2.怎么样才能捕捉到组合键并且判断、响应?
如果方便最好能给出一个例子,谢谢啦!
大虲:我注册不久,没来得及发帖,没分给,对不住!
------解决方案--------------------
哎,这种感觉不太好受啊……
我以前也是(虽然也才注册不久),问一个问题等很久都等不到消息……
看来是遇上难兄了,呵呵,我也尽点微薄之力吧。
你说的情形我没试过,但是我想我能提供点关于组合键的经验。
请参见文档java.awt.event.KeyEvent;类的描述
要监听一个键是否有其他键修饰(主要是指CTRL,ALT,SHIFT),在产生的KeyEvent对象有个方法
getModifier();具体是怎样我也记不太清了,大概吧,他将返回按键同时的修饰键情况。
比如,
KeyListener kl=new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode==KeyEvent.VK_F9 && e.getModifier()==KeyEvent.CTRL_MASK)
{
//要做的事
}
}
};
以上代码可能有问题(主要是getModifier()那里),因为我现在没有文档,也懒得下载,请自行核对
}
------解决方案--------------------
组合键应该这样写
e.getModifier() & (KeyEvent.VK_F9 | KeyEvent.CTRL_MASK) = e.getModifier()
全局监听的话 不用JNI估计实现不了 应该是注册快捷键到系统的