0

ホバーすると背景が変わるカスタムウィジェットがあります。うまく機能していますが、背景なしとホバー背景の間をスムーズに移行したいと考えています。で動作しますGC.setAlpha()が、:

Display.getDefault().asyncExec(new Runnable() {
    public void run() {
        for (int i=0;i<255;i++) {
            setBG(BGHelper(imgHover,i)); //i - alpha
            try {
                Thread.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }   
});

このコードは まで待機i == 255しますが、スムーズな遷移は表示されません。なんで?

4

1 に答える 1

3

コードにいる限り、SWT はコンポーネントを再描画または変更しないため、これは機能しません。

Display.asyncExec別のスレッドで作業を行い、すべての変更を呼び出す必要があります。

for (int i = 0; i < 255; i++) {
    final int x = i;
    Display.getDefault().asyncExec(new Runnable() {
        public void run() {
            setBG(BGHelper(imgHover,x)); //x - alpha
        }
    });
    try {
        Thread.sleep(1);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}
于 2012-11-04T18:04:40.310 に答える