2011-06-23 2 views
0

私が変更しているJFace SourceViewerを持っていて、ユーザーがその中のENTERキーを押してコードを実行した後で、 ENTERイベントの言い換えれば、私はSourceViewerのテキストにキャリッジリターンを望んでいません。jfaceでのKeyEventの処理SourceViewerはdoit = falseを尊重しません

KeyListenerとTraverseListenerが設定されていて、それらのすべてが正しく起動されていますが、evt.doit = falseと設定すると、ソースビューアにはまだキャリッジリターンが表示されます。

私がStyledTextウィジェットで同じことをすると、正しく動作します。 doit = falseの設定を上書きするSourceViewerクラスに何か問題がありますか?

答えて

2

私の推測では、あなたのリスナーはリスナーリストの後半に向けて発砲されています。 StyledTextではなくネイティブコントロールなので、キー、マウス、ペイント、サイズ変更などの処理は、キャンバスにリスナーをインストールすることで処理されます。StyledText.installListeners()を参照してください。

doit = falseを設定する前にこのリスナーを実行すると、そのキーはすでに消費されています。

あなたはしかしSWT.Verifyイベントにフックすることで、より良い変更があるかもしれません... VerifyKeyListenerにフッキング

+0

で働いていました。ありがとう! – thehiatus

関連する問題