当前位置:编程学习 > JAVA >>

java+swing全局键盘事件监听问题

各位高手,请教个问题,如何做到swing键盘监听事件,条件是要做到即使焦点不在JFrame上,也要能响应,好比QQ中按CTRL+ALT+Z呼出聊天窗口一样的!不论我当前的窗口是哪里,都可以进行键盘响应!高手们,手头就这80分了,谢啦! java swing 键盘事件 --------------------编程问答-------------------- 就没有个人会吗? --------------------编程问答-------------------- JAVA swing界面JFrame窗体的全局按键事件监听
public class ShowFrame extends JFrame 
{
public void init()
{
ShowFrame showFrame=new ShowFrame();//首先必须创建好窗体
KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
//然后得到当前键盘事件的管理器
manager.addKeyEventPostProcessor((KeyEventPostProcessor)this.getMyKeyEventHandler());
//然后为管理器添加一个新的键盘事件监听者。
}
public void getMyKeyEventHandler()
{
return new KeyEventPostProcessor()//返回一个实现KeyEventPostProcessor接口的匿名内部类。
{
public boolean postProcessKeyEvent(KeyEvent e)//实现postProcessKeyEvent方法
{
if (e.getKeyCode() == KeyEvent.VK_E)//根据你的需要监听相应的动作。
{
/*你想干什么就写在这个地方*/
}

}
}
如此以来就完成了。 --------------------编程问答--------------------

    KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();  
     manager.addKeyEventPostProcessor(new KeyEventPostProcessor() {  
        public boolean postProcessKeyEvent(KeyEvent event) {  
            if (event.getID() != KeyEvent.KEY_PRESSED) {  
                return false;  
            }  
            if (curPane != null) {  
                curPane.keyPressed(event);  
                return true;  
            }  
            return false;  
        }  
    });  
--------------------编程问答--------------------
引用 3 楼 huxiweng 的回复:

    KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();  
     manager.addKeyEventPostProcessor(new KeyEventPostProcessor() {  
        public boolean postProcessKeyEvent(KeyEvent event) {  
            if (event.getID() != KeyEvent.KEY_PRESSED) {  
                return false;  
            }  
            if (curPane != null) {  
                curPane.keyPressed(event);  
                return true;  
            }  
            return false;  
        }  
    });  
这个在焦点不在的时候不好使啊!
补充:Java ,  Java EE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,