0

キーを押すと何かが実行されるようにコードを書き込もうとしていますが、イベントを再トリガーするには、キーを離してからもう一度押す必要があります。そのため、ユーザーがキーを押したままにすると、何度も押し続けることはできず、押しては離す操作を繰り返す必要があります。
これまでのところ、私は持っています:

if(keyLifted)
{
    if(Keyboard.isKeyDown(45))
    {
        keyLifted = false;
        dostuff;
    }
    else if(Keyboard.isKeyDown(46))
    {
        keyLifted = false;
        dostuff();
    }
    else
    {
        keyLifted = true;
    }
}

しかし、これには明らかな理由があります(キーがすでに持ち上げられている場合にのみ、キーが持ち上げられていない状態にリセットされます。キーが押された場合、押されていない状態にはなりません)。いくつかのバリエーションを試しましたが、うまくいきません。

助けてくれてありがとう!

4

1 に答える 1

0

KeyListenerキーボードイベントをキャプチャするには、を使用する必要があります。どうぞ:

public class KeyListenerExample extends JFrame {
    public KeyListenerExample() {
        addKeyListener(new KeyAdapter() {
            private boolean keyLifted;

            public void keyReleased(KeyEvent e) {
                keyLifted = true;
            }

            public void keyPressed(KeyEvent e) {
                keyLifted = false;
                switch (e.getKeyChar()) {
                    case 45:
                        doStuff();
                        break;

                    case 46:
                        doStuff();
                        break;
                }
            }
        });
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    private void doStuff() {
        System.out.println("stuff");
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        new KeyListenerExample();
    }
}

keyLiftedそれはあなたの例にあるので、私はちょうど保持しました。しかし、私はあなたがそれを必要としない通常のキーボードのもののために思う。

于 2012-05-15T06:47:16.930 に答える