我想在一个JButton上添加一键盘监听器,使得在按下Ctrl+Enter时发生动作,请问下键盘监听器的类是这样写的吗?
userHashTable.remove(userName);
connectHashTable.remove(connection);
list.remove(userName);
user.setText("在线成员 ("+(list.getItemCount())+")");

解决方案 »

  1.   

    不好意思,粘贴错了。以下是键盘监听器的代码:
    private class KListener extends KeyAdapter{
              public void keyPressed(KeyEvent ke){
    if(ke.getKeyCode()==KeyEvent.VK_ENTER&&ke.getKeyCode()==KeyEvent.VK_CONTROL){
    sendMsg();
    System.out.println("click");
    }
    else System.out.println("NO");
    }
    }
      

  2.   

    不对,ke.getKeyCode()是不可能同时等于KeyEvent.VK_CONTROL和KeyEvent.VK_ENTER&&ke.getKeyCode()的
    好像是使用一个&的方法来判断的,我没弄清楚这个反正,搞了个稍微麻烦点的,可以实现你要的这个功能import java.awt.AWTEvent;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import javax.swing.JFrame;public class MyTest extends JFrame{
    private boolean ctrlPressed = false;

    public MyTest(){
    init();
    }

    private void init(){
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setLayout(null);
    setVisible(true);
    setSize(300,300);
    addKeyListener(new KeyListener(){ @Override
    public void keyPressed(KeyEvent e) {
    if(e.getKeyCode() == KeyEvent.VK_ENTER&&ctrlPressed){
    System.out.println(111);
    }else if(e.getKeyCode()==KeyEvent.VK_CONTROL){
    ctrlPressed = true;
    }
    } @Override
    public void keyReleased(KeyEvent e) {
    if(e.getKeyCode()==KeyEvent.VK_CONTROL){
    ctrlPressed = false;
    }
    } @Override
    public void keyTyped(KeyEvent arg0) {
    // TODO Auto-generated method stub

    }

    });
    enableEvents(AWTEvent.MOUSE_EVENT_MASK);
    enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);
    }


    public static void main(String[] args){
    new MyTest();
    }
    }
      

  3.   

     enableEvents(AWTEvent.MOUSE_EVENT_MASK);
     enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);
    这两行可以不要
      

  4.   

    已经解决了:
    答案:http://komes.javaeye.com/blog/404707
      

  5.   

    谢谢大家的回答~
    关于这个答案,我写了个类似的KeyAdapter,是可以用的。但我不知道为什么发送完消息,setText("")之后TextArea里的光标就直接从第二行开始了。但我想我的代码应该没有问题的.不知道大家有没有见过类似的情况