Java 我们可以使用KeyListener实现键绑定吗?
有趣的是,有没有一种方法可以让Java 我们可以使用KeyListener实现键绑定吗?,java,swing,keylistener,key-bindings,Java,Swing,Keylistener,Key Bindings,有趣的是,有没有一种方法可以让keylister完成与KeyBindings相同的工作,我的意思是覆盖keylister的方法并监听多个键(CTRL+somekey) 我知道,这是一个很愚蠢的想法,但正如我所说,这只是一个有趣的问题。你可以通过使用旗帜来实现: KeyListener kl = new KeyListener() { boolean controlPressed = false; @Override public void keyTyped(KeyEve
keylister
完成与KeyBindings
相同的工作,我的意思是覆盖keylister的方法并监听多个键(CTRL+somekey)
我知道,这是一个很愚蠢的想法,但正如我所说,这只是一个有趣的问题。你可以通过使用旗帜来实现:
KeyListener kl = new KeyListener() {
boolean controlPressed = false;
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_CONTROL) {
controlPressed = true;
return;
}
if(controlPressed) {
// CTRL is pressed, you can check here for other keys:
if(e.getKeyCode() == KeyEvent.VK_A) {
//CTRL + A was pressed
}
}
}
@Override
public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_CONTROL) {
controlPressed = false;
}
}
};
正如camickr在评论中指出的,另一种方法是使用
isControlDown
方法,从KeyEvent
:
if(e.isControlDown()) {
//CTRL is pressed
}
您可以通过使用标志来执行此操作:
KeyListener kl = new KeyListener() {
boolean controlPressed = false;
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_CONTROL) {
controlPressed = true;
return;
}
if(controlPressed) {
// CTRL is pressed, you can check here for other keys:
if(e.getKeyCode() == KeyEvent.VK_A) {
//CTRL + A was pressed
}
}
}
@Override
public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_CONTROL) {
controlPressed = false;
}
}
};
正如camickr在评论中指出的,另一种方法是使用
KeyEvent
中的isControlDown
方法:
if(e.isControlDown()) {
//CTRL is pressed
}
另一种选择是,您可以这样做,即按住Ctrl键,同时
另一种选择是,您可以这样做,即按住Ctrl键,同时
KeyEvent包含Alt、Shift和Control键所需的信息:
if(e.getKeyCode() == KeyEvent.VK_A && e.isControlDown())
{
// do something
}
KeyEvent包含Alt、Shift和Control键所需的信息:
if(e.getKeyCode() == KeyEvent.VK_A && e.isControlDown())
{
// do something
}
如果按下了
CTRL
,之后该怎么办?如何收听另一个键?KeyListener
收听键盘上的所有键,因此您只需使用KeyEvent
中提供的键代码检查按下了哪个键。我用一个例子更新了答案,不知道为什么要使用标志。KeyEvent包含有关Alt键、Control键和Shift键的信息。如果按下了CTRL
,之后该怎么办?如何收听另一个键?KeyListener
收听键盘上的所有键,因此您只需使用KeyEvent
中提供的键代码检查按下了哪个键。我用一个例子更新了答案,不知道为什么要使用标志。KeyEvent包含有关Alt、Control和Shift键的信息。