我在对话框中处理了keyPress事件(比如,当key是VK_V6时,我就做一些事情),
但是发现如果焦点不在对话框本身,而是在对话框的某个控件上的时候,
就收不到keypress事件。我想问在java里面,怎样做到让对话框总能收到keypress事件呢?
不论焦点在对话框本身,还是在它的子控件上?
我知道在windows里面,在对话框的PretranslateMessage()里面可以去捕获这个事件,
但是不知道java里面该怎么做?谢谢指点!

解决方案 »

  1.   

    我是让对话框处理keyPress事件,可是当focus不在对话框本身,而是在对话框的某个控件或者子component上的时候,对话框就收不到keypress事件了,我的要求是,只要对话框或者对话框的任何一个子控件有focus,都能调用到keypress的handler.我想总不能给对话框的每一个子控件都加上这个keypress的listener,应该有更好的办法才对,希望高人指点! 
      

  2.   


    KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
        Window win = manager.getFocusedWindow();
        Window active = manager.getActiveWindow();
        active.addKeyListener(new KeyAdapter() {
          public void keyTyped(final KeyEvent e) {
            System.out.println(e.getKeyChar());
          }
          public void keyPressed(final KeyEvent e) {
            System.out.println("pressed");
          }
        });