0

アイコンを「更新」したいRCP GUIがあります。ユーザーがアイコンをクリックすると、アイコンが無効になります。3 秒後に再び有効になります。

thread なしでそれを行う方法を見つけたいと思います。

私はこのチュートリアルに従いました: Perspectiveではなく、ViewPartでの選択に基づいてToolbar-Commandを有効/無効 にする 動作しますが、私の問題は、TimerThreadを実行せずに、Eclipseでボタンを再アクティブ化する方法がわからないことです...

何か案は?

4

1 に答える 1

0

スレッドがなければ、while ループで実行できます。

long start = System.currentTimeMillis();
long current = start;
long threeSecondsAsMillis = 3 * 1000;
long oneSecondsAsMillis = 1000;

while (current < start + threeSecondsAsMillis) {
    Thread.sleep(oneSecondsAsMillis);
    current += oneSecondsAsMillis;
}
// continue your work

UI をブロックするため、これは悪い解決策であることに注意してください。より良い解決策は、Eclipse ジョブを使用することです。

    Job job = new Job("") {

                @Override
                protected IStatus run(IProgressMonitor monitor) {
                    // note, that you are not in the UI-Thread anymore, but you must enable icon in the UI-Thread:


    Display.getDefault().asyncExec(new Runnable() {

            @Override
            public void run() {
            // enable icon
            }
        });
        return Status.OK_STATUS;
 }
 };
job.schedule(3000);

greg-449 が指摘したように、UIJob も使用できます。

UIJob job = new UIJob("") {

                @Override
                    public IStatus runInUIThread(IProgressMonitor monitor) {


    // enable icon
                    return Status.OK_STATUS;
                }
            };
            job.schedule(3000);
于 2013-10-21T06:49:39.920 に答える