0

などの特殊文字のキーイベントを生成したい£, €, µ, ½, Ö, Ä.次のコードを使用して、「A、B、c、%、*、^」などのキーボード上のキーのキーイベントを生成できます。

public static void generateKeyEvent(final int c) {

        new Thread() {
            public void run() {

                try {
                    Robot robot = new Robot();
                    robot.keyPress(c);

                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                    }
                    robot.keyRelease(c);
                } catch (Exception e) {
                e.printStackTrace();
                }
            }
        }.start();

    }

通常の文字の場合は正常に動作していますが、上記の文字の場合、コードは次の例外をスローしています:

java.lang.IllegalArgumentException: Invalid key code
at sun.awt.windows.WRobotPeer.keyPress(Native Method)
at java.awt.Robot.keyPress(Unknown Source)
at com.companyname.utils.Abc$1.run(Abc.java:286)

これらの特殊文字はキーボードにマップされていないため、この例外がスローされているため、この問題の解決策を探しているときに気づいたことが 1 つあります。

どうすればこれを行うことができますか?

4

2 に答える 2

1

私はこの問題への答えを得ました..基本的に、それらのような記号を印刷したい場合は、それを入力するために「alt」キーが必要です。

たとえば、メモ帳で「é」と入力する必要がある場合は、alt+130 と入力する必要があります。

だから私は同じことをしました.altのキーイベントを生成し、次にテンキー1、次にnumpad3、最後にnumpad0を生成しました。

于 2012-05-22T11:42:49.597 に答える
0

どのように鍵を渡しますか?Robot.keyPressは、文字ではなくキーコードを想定していることに注意してください。KeyEvent定数を見てください。VK_EURO_SIGNがありますが、他についてはわかりません。KeyListenerを実装し、特定のキー(キーの組み合わせ)が押されたときにKeyEvent.getKeyCode()をチェックすることで、任意のキーコードを取得できるはずです。

于 2012-05-18T12:10:20.570 に答える