RT

解决方案 »

  1.   

    键盘事件很关注当前的焦点控件,如果你注册事件的控件并不是当前的焦点控件,那么键盘事件就不会发送给你所注册的监听函数。所以当窗口有其它组件的时候,往往焦点是不在Frame上的,而是在其它组件身上。
      

  2.   

    捕捉键盘事件需要注意焦点问题。不知道你是用的AWT/Swing还是SWT/JFace不要用addKeyListener,那个需要找到控件的焦点才能捕捉键盘事件。
    找到Display驱动。
    getDisplay().addFilter(SWT.KeyDown, new Listener() {
        public void handleEvent(Event event) {
            //
        }
    };SWT照上面这样应该就行了,至于AWT就不了解了
      

  3.   

    就是焦点问题要捕获所有键盘鼠标事件要全局钩子java自己实现不了的jni调用别的程序实现
      

  4.   


    菜鸟摸索中,我用的是AWT,理解了点
      

  5.   


    这时候怎么让Frame获得焦点?
      

  6.   


    frame.requestFocus(); 可以让目标控件获得焦点,不过如果用户点了别的位置,仍然会再次丢失焦点的。