JFace:将田野装饰放在田地里?

时间:2014-08-22 19:37:40

标签: java plugins swt jface

我目前正在使用JFace开发一个用于数据库插件功能的GUI(由于线程问题,不能使用任何其他方法),并且我的任务是使GUI看起来尽可能类似于数据库字段。我需要在文本字段中放置一个星号,如下所示:

enter image description here

我尝试使用FieldDecorator方法执行此操作,但这会将星号放在文本字段之外。有没有办法让它在文本字段内部绘制?

1 个答案:

答案 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();