击键没有捕获左/右但能够捕捉上/下和所有其他键

时间:2009-10-29 17:34:02

标签: java

我正在绑定我的Java应用程序中的事件,但是,我遇到了一个非常奇怪的错误,我希望你们可以帮我解决。

        KeyStroke up = KeyStroke.getKeyStroke("W");
        KeyStroke down = KeyStroke.getKeyStroke("S");
        KeyStroke right = KeyStroke.getKeyStroke("D");
        KeyStroke left = KeyStroke.getKeyStroke("A");
        KeyStroke p2_up = KeyStroke.getKeyStroke("UP");
        KeyStroke p2_down = KeyStroke.getKeyStroke("DOWN");
        KeyStroke p2_left = KeyStroke.getKeyStroke("LEFT");
        KeyStroke p2_right = KeyStroke.getKeyStroke("RIGHT");
        /*KeyStroke key_1 = KeyStroke.getKeyStroke("1");
        KeyStroke key_2 = KeyStroke.getKeyStroke("2");
        KeyStroke key_3 = KeyStroke.getKeyStroke("3");
        KeyStroke key_4 = KeyStroke.getKeyStroke("4");
        KeyStroke key_5 = KeyStroke.getKeyStroke("5");
        KeyStroke key_6 = KeyStroke.getKeyStroke("6");
        KeyStroke key_7 = KeyStroke.getKeyStroke("7");
        KeyStroke key_8 = KeyStroke.getKeyStroke("8");
        KeyStroke key_9 = KeyStroke.getKeyStroke("9");
        KeyStroke key2_1 = KeyStroke.getKeyStroke("F1");
        KeyStroke key2_2 = KeyStroke.getKeyStroke("F2");
        KeyStroke key2_3 = KeyStroke.getKeyStroke("F3");
        KeyStroke key2_4 = KeyStroke.getKeyStroke("F4");
        KeyStroke key2_5 = KeyStroke.getKeyStroke("F5");
        KeyStroke key2_6 = KeyStroke.getKeyStroke("F6");
        KeyStroke key2_7 = KeyStroke.getKeyStroke("F7");
        KeyStroke key2_8 = KeyStroke.getKeyStroke("F8");
        KeyStroke key2_9 = KeyStroke.getKeyStroke("F9");*/

        InputMap inputMap = content
                .getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);

        inputMap.put(up, "up");
        inputMap.put(down, "down");
        inputMap.put(right, "right");
        inputMap.put(left, "left");

        inputMap.put(p2_up, "up2");
        inputMap.put(p2_down, "down2");
        inputMap.put(p2_right, "right2");
        inputMap.put(p2_left, "left2");

        Bindings KbBinds = new Bindings(this.currentBigBox);

        content.getActionMap().put("up", KbBinds.moveUp);
        content.getActionMap().put("down", KbBinds.moveDown);
        content.getActionMap().put("right", KbBinds.moveRight);
        content.getActionMap().put("left", KbBinds.moveLeft);

        content.getActionMap().put("up2", KbBinds.p2MoveUp);
        content.getActionMap().put("down2", KbBinds.p2MoveDown);
        content.getActionMap().put("right2", KbBinds.p2MoveRight);
        content.getActionMap().put("left2", KbBinds.p2MoveLeft);

基本上除了LEFT / RIGHT之外的所有键都被捕获并绑定。如果我替换这个

        KeyStroke p2_left = KeyStroke.getKeyStroke("LEFT");

与             KeyStroke p2_left = KeyStroke.getKeyStroke(“UP”);

在评论p2_up时,p2_left按预期工作。

有任何线索吗?

2 个答案:

答案 0 :(得分:0)

我没有投票,但我会。原因是您发布的代码中有90%在提供有关您的问题的信息方面毫无用处。我们不知道您如何使用代码的上下文或您要将绑定添加到...

的组件

我在使用“上,下,左,右”时使用了键绑定没有问题。

如果您需要更多帮助,请发布SSCCE

答案 1 :(得分:0)

最可能的解释是某些东西正在捕捉那些击键。最可能的候选者是滚动窗格或某种输入文本框。