Java 如何自定义控件的背景色以输入由EMFForms生成的布尔值?
我有一个EMF模型,从中生成UI表单并将其嵌入到向导中 复选框显示为白色背景(见下文),看起来不太好看 如何更改复选框的背景色(避免白色条带) 我尝试使用Java 如何自定义控件的背景色以输入由EMFForms生成的布尔值?,java,swt,eclipse-emf,emf,Java,Swt,Eclipse Emf,Emf,我有一个EMF模型,从中生成UI表单并将其嵌入到向导中 复选框显示为白色背景(见下文),看起来不太好看 如何更改复选框的背景色(避免白色条带) 我尝试使用BooleanControlSWTRenderer子类(见下文),但没有成功 public class MyRenderer extends BooleanControlSWTRenderer { @Override protected Control createSWTControl(Composite parent, S
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):调用检查。建议的设置背景(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;
}
结果显示在以下视图中
这可能就是您需要的:
@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
不同的是,我们使用了一个附加的解决方法,并添加了一个绘画监听器
我已经试过了,效果很好。
setBackground
而不是setForeground
应该可以。那是个打字错误。当我把它改回setBackground
时,我得到了相同的结果。