KeyListener kl=new KeyAdapter()
         
{
     public void keyPressed(KeyEvent e)
     {
          if ( !e.isActionKey()&&(e.getKeyCode()!=e.VK_CONTROL)&&(e.getKeyCode()!=e.VK_SHIFT)&&(e.getKeyCode()!=e.VK_ALT)&&(bt!=null))
          bt.setEnabled(true);      
     }
}以上代码,为了让一个文本框中,只要输入符合要求,就把按钮设置成true,可是监听事件无法监听到输入法,这个该怎么解决呢?

解决方案 »

  1.   

    那些事件已经被输入法给拦截了,就如windows里程序勾子一样,在这个事件传给你的程序之前已经被输入法给截取了,然后输入法处理这些事件后,并不继续把这些事件传递给你的应用程序。例如,在中文输入法中,如果你选用的是半角输入标点,那么你这个程序还是能够执行到 bt.setEnabled(true);  但如果是全角输入标点的话,这条语句就不会得到执行。
      

  2.   

    输入事件被输入法截取,无法传递到程序执行逻辑中!如果是要实现"符合输入要求"可以考虑DocumentListener,来监听文本控件的Document,但这样对于命令按键没辙