1

ここで、次のような Eclipse プラグイン アクション (ボタン) をプログラムで設定したいと思います。

ここに画像の説明を入力

たとえば、ユーザーがそれを押した場合、特定の条件下でオフに切り替えたくありません。

このコードは、アクション (ボタン) を作成します。

class MyAction extends Action {
    public MyAction() {
        super(NAME, IAction.AS_CHECK_BOX);
    }

    ...
    Thread.sleep(100); wait a little bit incase there is a thread update issue
    if (condition)
        setChecked(true); // does not work, it does not force the button to appear as depressed. It just keeps toggling.
    ...
}

何らかの理由で setChecked(true) が機能しません。

4

1 に答える 1

0

ここでの問題は、あなたがのsetChecked中で呼んでいるという事実だと私は信じていますAction.run()。チェックボックスをクリックした場合の効果の1つはチェックボックスをオンにすることであるため、実行中にアクションをこっそりキャンセルしようとしています。実際、フレームワークのコードセットがAction.run()戻った後にtrueにチェックされているに違いないので、変更を踏みにじっています。

Actionより明確な方法でこれを制御できるようにする方法があります。を実装するのではなく、.run()を実装し.runWithEvent(Event)ます。この関数は、よりきめ細かい制御を行うために使用できるEventオブジェクトを渡します。

Event.doitこの場合、 falseに設定したいと思います。ドキュメントから:

このフィールドをfalseに設定すると、操作がキャンセルされます。

別のオプション

条件の計算方法によっては、チェックボックスが変更されたときに、チェックボックスを先制的に有効/無効にすることができます。このようにして、ツールチップなどを防止して、ツールチップが無効になっている理由を説明することもできます。

于 2013-02-14T14:22:31.000 に答える