我有一个EMF模型,我从中生成了UI表单并将其嵌入到向导中。
复选框显示为白色背景(见下文),看起来并不好看。
如何更改复选框的背景颜色(避免白条)?
我尝试使用BooleanControlSWTRenderer
子类(见下文),但它没有用。
public class MyRenderer extends BooleanControlSWTRenderer {
@Override
protected Control createSWTControl(Composite parent, Setting setting) {
final Button check = new Button(parent, SWT.CHECK);
check.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_GRAY));
check.setData(CUSTOM_VARIANT, "org_eclipse_emf_ecp_control_boolean"); //$NON-NLS-1$
return check;
}
}
更新1(05.11.2014 17:12 MSK):按照建议here致电check.setBackground(null)
也无效。
更新2(05.11.2014 17:34 MSK):修改此代码
@Override
protected Control createSWTControl(Composite parent, Setting setting) {
Button check = new Button(parent, SWT.CHECK);
check.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_GRAY));
parent.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_GRAY));
parent.setBackgroundMode(SWT.INHERIT_FORCE);
check.setData(CUSTOM_VARIANT, "org_eclipse_emf_ecp_control_boolean"); //$NON-NLS-1$
return check;
}
产生以下视图。
答案 0 :(得分:1)
这可能就是你所需要的:
@SuppressWarnings("restriction")
public class MyRenderer extends BooleanControlSWTRenderer {
@Override
protected Control createSWTControl(final Composite parent, Setting setting) {
final Button check = new Button(parent, SWT.CHECK);
check.addPaintListener(new PaintListener() {
@Override
public void paintControl(PaintEvent arg0) {
check.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_GRAY));
}
});
return check;
}
}
与MyRenderer
的区别在于我们使用附加解决方法并添加绘图侦听器due to this problem。
我已经尝试过它了see this page。