我在SWT中有一个Tree-Viewer。我在其中选择了一个“节点/行”,然后将该行的背景色更改为绿色。
现在,我禁用了Tree-viewer,但现在禁用了Tree-Viewer孔,并且背景色也消失了。
我知道这是因为我正在禁用查看器。但是有什么方法可以使选定的行的背景色在禁用查看器后与我们设置的背景色相同。
最佳答案
考虑使用StyledCellLabelProvider,您可以成功地对其进行扩展以提供标签样式,如下所示:(请参阅TextStyle类以获取更多格式选项)。
public class MyStyledLabelProvider extends StyledCellLabelProvider {
private Styler defaultStyler;
public MyStyledLabelProvider () {
defaultStyler = new Styler() {
@Override
public void applyStyles(TextStyle textStyle) {
textStyle.strikeout = true;
}
};
}
@Override
public void update(ViewerCell cell) {
Object element = cell.getElement();
StyledString styledString = getStyledString(element);
cell.setText(styledString.toString());
cell.setStyleRanges(styledString.getStyleRanges());
super.update(cell);
}
@SuppressWarnings("unchecked")
private StyledString getStyledString(Object element) {
return new StyledString("Cell string", defaultStyler);
}
}