我正在制作一个听取ctrl-1和ctrl-2的keylistener。
我正在为团队进行测验。如果他们想回答,第1组应该按ctrl-1。如果他们想回答,第2组应按ctrl-2。
我选择ctrl的原因是因为有2个控制键。因此,2支队伍可以在1个键盘上对战。
我希望团队1使用左控制和F1-F12下的数字。 并且团队2使用正确的控制和numlock上的数字。
我的代码注册了团队1的触发器,但没有注册团队2的触发器。 这是我的代码:
public void keyPressed(KeyEvent e) {
if((QuizController)getController() != null){
if(e.getKeyCode () == KeyEvent.VK_1){
if((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)
System.out.println("Team 1");
}
if(e.getKeyCode () == KeyEvent.VK_2){
if((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)
System.out.println("Team 2");
}
}
}
编辑:我刚刚用键绑定做了,给出了同样的问题,这是代码。
AbstractAction team1 = new AbstractAction() {
public void actionPerformed(ActionEvent arg0) {
System.out.println("Team 1");
}
};
AbstractAction team2 = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("Team 2");
}
};
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_1, java.awt.event.InputEvent.CTRL_DOWN_MASK),"actionMap1");
getActionMap().put("actionMap1", team1);
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_2, java.awt.event.InputEvent.CTRL_DOWN_MASK),"actionMap2");
getActionMap().put("actionMap2", team2);
谢谢!
答案 0 :(得分:2)
首先,我强烈建议您使用key bindings API。
第二个KeyEvent.VK_1
与为numpad + 1引发的事件不同,这是由KeyEvent.VK_NUMPAD1
触发的,而是一个不同的键事件,就像函数键被引发一样{{1} } KeyEvent.VK_F1
事件。
例如......
12