3

TableViewer私は現在、編集可能なセルを含む複数のを表示するEclipseRCPアプリケーションに取り組んでいます。これらのセルは、EMFデータバインディングを介してモデルに接続されています。

ここで、編集後のセルを緑色に点滅させます。つまり、背景色を緑色に設定してからフェードアウトします。使い始めるのを簡単にするために、cell-background-colorを緑に設定し、1秒後に白に戻したいと思います。

背景色を緑に設定するのが原因ですが、編集中の色が自動的にnullに設定されているため、1秒後に白に戻すことができViewerCellません。理由がわかりません。 。

これが私のからのコード抽出(それは機能しません)ですCellLabelProvider

@Override
public void update(final ViewerCell cell) {
     //this works:
     cell.setBackground(new Color(Display.getCurrent(), 0, 255, 0));        
     Display.getCurrent().timerExec(1000, new Runnable() {
          public void run() {
                //for this I get a NullPointerException:
                cell.setBackground(new Color(Display.getCurrent(), 255, 255, 255));
          }
     });
}

どんな助けでも大歓迎です!

4

1 に答える 1

8

https://bugs.eclipse.org/bugs/show_bug.cgi?id=201280ViewerRowでnullに設定される修正に関連するバグがありましたViewerCell

発生している問題を修正するには、を使用しないでくださいViewerCell

このコードを試してください

col.setLabelProvider(new ColumnLabelProvider() {
          @Override
          public void update(final ViewerCell cell) {
               cell.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_DARK_GREEN)); 
               final int index = cell.getColumnIndex();
               final TableItem item = (TableItem) cell.getItem();
               Display.getCurrent().timerExec(1000, new Runnable() {
                    public void run() {
                      //make sure table is not disposed
                      item.setBackground(index, Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
                    }
               });
          }
        });
于 2012-11-29T15:35:22.997 に答える