尝试触发按下的 CTRL 键时键码无效
Invalid key code when trying to fire a CTRL key pressed
我试图按下 CTRL+O 键,但我在 keyPress
方法。我不知道为什么,我们不能使用 keyPressed 方法触发 CTRL 按下的键吗?
这是我的代码:
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
public class MainTest extends JFrame{
public static void main(String[] args) throws AWTException {
Robot r= new Robot();
r.keyPress(KeyEvent.CTRL_MASK);
r.keyPress(KeyEvent.VK_O);
MainTest mainF =new MainTest();
mainF.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if ((e.getKeyCode() == KeyEvent.VK_O) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)) {
System.out.println("woot!");
}
}
});
}
}
只需在第一个 keyPress
中使用 KeyEvent.VK_CONTROL
而不是 KeyEvent.CTRL_MASK
,这实际上会按下 Control 键。
r.keyPress(KeyEvent.VK_CONTROL);
r.keyPress(KeyEvent.VK_O);
您可以只使用 InputEvent isControlDown() method。
isControlDown
public boolean isControlDown()
Returns whether or not the Control modifier is down on this event.
您的代码将如下所示:
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if ((e.isControlDown()) {
System.out.println("woot!");
}
}
您可以查看 this tutorial 了解更多详情。
我试图按下 CTRL+O 键,但我在 keyPress
方法。我不知道为什么,我们不能使用 keyPressed 方法触发 CTRL 按下的键吗?
这是我的代码:
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
public class MainTest extends JFrame{
public static void main(String[] args) throws AWTException {
Robot r= new Robot();
r.keyPress(KeyEvent.CTRL_MASK);
r.keyPress(KeyEvent.VK_O);
MainTest mainF =new MainTest();
mainF.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if ((e.getKeyCode() == KeyEvent.VK_O) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)) {
System.out.println("woot!");
}
}
});
}
}
只需在第一个 keyPress
中使用 KeyEvent.VK_CONTROL
而不是 KeyEvent.CTRL_MASK
,这实际上会按下 Control 键。
r.keyPress(KeyEvent.VK_CONTROL);
r.keyPress(KeyEvent.VK_O);
您可以只使用 InputEvent isControlDown() method。
isControlDown
public boolean isControlDown()
Returns whether or not the Control modifier is down on this event.
您的代码将如下所示:
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if ((e.isControlDown()) {
System.out.println("woot!");
}
}
您可以查看 this tutorial 了解更多详情。