我想在一个JButton上添加一键盘监听器,使得在按下Ctrl+Enter时发生动作,请问下键盘监听器的类是这样写的吗?
userHashTable.remove(userName);
connectHashTable.remove(connection);
list.remove(userName);
user.setText("在线成员 ("+(list.getItemCount())+")");
userHashTable.remove(userName);
connectHashTable.remove(connection);
list.remove(userName);
user.setText("在线成员 ("+(list.getItemCount())+")");
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");
}
}
好像是使用一个&的方法来判断的,我没弄清楚这个反正,搞了个稍微麻烦点的,可以实现你要的这个功能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();
}
}
enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);
这两行可以不要
答案:http://komes.javaeye.com/blog/404707
关于这个答案,我写了个类似的KeyAdapter,是可以用的。但我不知道为什么发送完消息,setText("")之后TextArea里的光标就直接从第二行开始了。但我想我的代码应该没有问题的.不知道大家有没有见过类似的情况