2016-06-28 13 views
1

JFace IActionとsetAccelerator()を使用するキーボードショートカットに関する問題に直面しています。私のサンプルコード:IAction :: setAcceleratorの使用が期待通りに機能しない

menuAction.setAccelerator(SWT.CTRL | 'A'); 

キーボードショートカットCtrlL + Aは自分のアプリケーション内で認識されていません。

+0

これは単なるSWT + JFaceアプリケーションですか、それともEclipseプラグインの一部ですか? –

+0

これは単なるjface(swt)です。 –

答えて

1

私の知る限り、IActionのアクセラレータプロパティは、キーショートカットを使用する必要がある情報のみを保持しています。

キーショートカットをキャプチャして一致するアクションを実行する実際の実装は、JFaceの一部ではなく、少なくともデフォルトではアクティブではありません。プラットフォーム/ UIの一部であるいくつかのビットとピースは、それをワークベンチで動作させます。実際アクセラレータは、スタンドアロンJFaceのアプリケーションで動作させるために必要とされているものを見るために

、あなたはActionContributionItemExternalActionManager.ICallback::isAcceleratorInUse()への呼び出しに従ってください〜ライン825

これは解決につながらない場合は、まだすることができキーショートカットのそれぞれのアクションを呼び出すための表示フィルタを追加します(SWT Actions with Keyboard Shortcuts... without having to add them to the menuも参照)。

0

このアクションを追加することを忘れないでください。menuActionあなたのメニューマネージャーにすべてのものを適用した後、メニューマネージャーを更新する必要があります。メニューマネージャのupdateAll(true)メソッドに電話してください。メニューマネージャーがアクセラレータの割り当てをまだ認識していないため、このアップデートが必要です。

関連する問題