1



SWT のツリ​​ーにキー リスナーを追加しました。Alt+Enter キーを押すと、キー イベントの状態は keyCode = 65536 および statemask = 0 になります。
以下は、私が書いたコードスニペットです-

mViewer.getTree().addListener(SWT.KeyDown, new Listener() {
            @Override
            public void handleEvent(Event e) {
                if(e.keyCode == SWT.CR && e.stateMask == SWT.ALT) {
                    e.doit = false;
                }
            }
        });

Eclipse ワークベンチは、コンポーネント内のリスナーにイベントを委譲する前に、一部のイベントをフィルタリングします。ツリービューアーの 1 つで Eclipse でプロパティの表示を実行しないように alt+enter を無効にする方法はありますか?

よろしく、 ケシャブ

4

3 に答える 3

1

キーが状態キーであっても、すべてのキー/ダウンイベントが表示されます。したがって、最初のイベントはAltキーダウンです...

シーケンスは次のようになります。

  • KeyDown:stateMask=0およびkeyCode=65536
  • KeyDown:stateMask=65536およびkeyCode='\r'
  • KeyUp:stateMask=65536およびkeyCode='\r'
  • KeyUp:stateMask=0およびkeyCode=65536
于 2011-06-23T12:13:56.207 に答える
1

特定のビューアの特定のグローバルコマンドをオーバーライドするには、さまざまな方法があります。

  • キーシーケンスを除外するリスナーを追加しますが、常に可能であるとは限りません。
  • 同じことを行うためにフィルターを追加しDisplayます-フィルターは、ビューアーのコントロールのフォーカスイン/フォーカスアウトで追加/削除できます。
  • アプリケーションに新しいコンテキストを追加し、新しいコンテキストに必要なキーバインディングをオーバーライドします-コンテキストは、ビューアのコントロールのフォーカスイン/アウトでアクティブ化/非アクティブ化されます

通常のバインディング拡張ポイントを使用して、任意のプラグインからビューアの特定のキーバインディングをオーバーライドできるため、この最後のソリューションを好みます...

于 2011-06-28T14:56:22.367 に答える
1

次のコードを試してください。

mViewer.getTree().addKeyListener(new KeyAdapter() {
    @Override
    public void keyPressed(KeyEvent e) {
        if(e.keyCode == SWT.CR && e.stateMask == SWT.ALT) {
            // your code
            e.doit = false;
        }
    }
});

必要なインポートは次のとおりです。

import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
于 2011-06-21T12:01:54.777 に答える