質問

F1 CTRL + F1 それぞれの SHIFT - CTRL + F1 は、JButtonなどの背後に登録されたKeyListener内にありますか?

public void keyPressed(KeyEvent event) {
    int key = event.getKeyCode();

    logger.debug("KeyBoard pressed char(" + event.getKeyChar() + ") code (" + key + ")");
}

..は常に F1 に112、 F2 に113などを提供します。 CTRL / SHIFT / ALT /などのkeyReleasedのkeyPressed()を自分で処理することで処理できることを理解しています、しかしより良い方法があることを願っています。

本当にありがとう!!!

役に立ちましたか?

解決

ソリューションはKeyEvent(InputEvent)の親にあります

  1. isAltDown、isControlDown、isShiftDownメソッドを使用するか、
  2. getModifiersメソッドを使用する

他のヒント

KeyEventはInputEventを拡張するため、 isControlDown isShiftDown および isAltDown

Swingウィジェットを扱う場合、

KeyEvent はおそらく少し低レベルです。代わりに、 InputMap および ActionMap を使用します。

キーダウンイベントは、明らかにキーがダウンするたびに呼び出されます。 マルチキーダウンイベントではなく、そのようなことはありません。そのため、複数のキーがダウンするためのキーコードはありません。

変数を使用して、押されているcrtlキーを追跡する必要があります。これは、コントロールキーが放されたときを追跡するために、キーアップイベントも使用する必要があることを意味します。

pusedoコードの場合:

// CRTLKeyCode is whatever the code is for the ctrl key
private boolean ctrlPressed = false;

 onKeyDown(KeyEvent event){
     int key = event.getKeyCode();
     if(key == CRTLKeyCode)
        ctrlPressed = true;
     else if(ctrlPressed && key == 112)
        //Perform your action
 }
 onKeyUp(KeyEvent event){
     int key = event.getKeyCode();
     if(key == CRTLKeyCode)
        ctrlPressed = false;
 }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top