3

我目前正在开发一个 Eclipse RCP 应用程序,该应用程序显示多个TableViewer包含可编辑单元格的 s。这些单元通过 EMF 数据绑定连接到我的模型。

现在我希望编辑后的单元格闪烁绿色,这意味着将背景颜色设置为绿色然后淡出。为了更容易上手,我想将单元格背景颜色设置为绿色,然后在 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 回答