我目前正在使用JFace开发一个用于数据库插件功能的GUI(由于线程问题,不能使用任何其他方法),并且我的任务是使GUI看起来尽可能类似于数据库字段。我需要在文本字段中放置一个星号,如下所示:
我尝试使用FieldDecorator方法执行此操作,但这会将星号放在文本字段之外。有没有办法让它在文本字段内部绘制?
答案 0 :(得分:4)
您无法在控件内显示字段装饰。
你可以做的是使用没有边框的Text
控件,并将其放在带边框的Composite
中。装饰也可以在复合材料内。设置复合背景颜色以匹配文本将使事情看起来像你想要的那样。
类似的东西:
Composite border = new Composite(composite, SWT.BORDER);
GridLayout layout = new GridLayout();
layout.marginHeight = 0;
layout.marginWidth = 0;
layout.marginRight = 8; // Margin at right large enough for your decoration
border.setLayout(layout);
// Set border composite color to match Text background
border.setBackground(border.getDisplay().getSystemColor(SWT.COLOR_WHITE));
Text text = new Text(border, SWT.SINGLE);
ControlDecoration dec = new ControlDecoration(text, SWT.RIGHT | SWT.TOP, border);
dec.setImage(your image);
dec.show();