2009-06-16 17 views
0

...修飾キーの状態

私はorg.eclipse.swt.widgets.Compositeを拡張する小さなクラスを作っていますし、入れ子にすることになっています私は、マウスやキーボードのイベントに反応するようになっているウィジェットを持っているこの小さなクラスでRCPアプリ...

しかし

私はproblemeは、私はちょうど聞くことができないということです

...私はそれらをクリックするか、またはそれらにキーボードイベントを送信するときに、私のcoponents行動を変えるために(Shiftキー/ Ctrlキー/ Altキー/ ...)修飾キーを使用する必要がありますMOD-キー印象的なのための私のユーザーは、私のコンポーネントからそれを打つことができるし、それをクリックし...

が、私は私のコンポーネントをネストシェルを乱さないために表示フィルタを使用することはできません。(をそれとすることができるので、他の解決策がない場合の最後の解決策になります

私のコンポーネントと同じ大きさであり、mod-keyが私のコンポーネントから外れてしまうので、すべてのコンポーネントにイベントを読み込んでディスパッチするトランスペアレントなコンポーネントを作ることはできませんシェルから)

誰にも分かりませんか?

+0

ああました状態マスクについて何か...私はそれについてさらに検索します^^ – Ar3s

答えて

3
もっと

以下

myComponent.add<Any>Listener(new <Appropriate>Listener(){ 
    @Override 
    public void <AppropriateMethod>(like KeyPress)>(<Appropriate>Event e) { 
     int stateMask=e.stateMask; 
     if((stateMask & SWT.ALT)==SWT.ALT){ 
      <Do_appropriate_actions>; 
     } 
     if((stateMask & SWT.CTRL)==SWT.CTRL){ 
      <Do_another_appropriate_actions>; 
     } 
     if((stateMask & SWT.SHIFT)==SWT.SHIFT){ 
      <Do_an_even_more_appropriate_actions_cause_you_are_kind_of_a_code_roxxor_!>; 
     } 
    }; 
};

はそれが役に立てば幸いようにそれはある...

1

すべてのキーをキャプチャし、後でそれらを保存するために、これらの線に沿って何かを試してみてください:

Display.getDefault().addFilter(SWT.KeyDown, new Listener() { 

     public void handleEvent(Event passedEvent) { 
      //Listen for and store as static var last pressed keycode 
      System.out.println("Key Event: " + passedEvent); 
     } 
    }); 
+0

はい、しかし、それは不必要なものであってもすべてのキーをキャプチャします... My Stat e-Maskメソッド(別のイベントをトリガーするときにモディファイアキーを押したままにする)はもっと簡単です^^(私の場合は少なくとも) – Ar3s

+0

あなたのメソッド/ソリューションをこの質問にも投稿できますか?ありがとう – fisherja