Eclipse RCP数据绑定:标签的文本已更新,大小则未更新

时间:2012-07-24 17:55:22

标签: java swt eclipse-rcp

我使用以下代码将标签的文本值绑定到我的后端模型(省略了一些细节):

Model model = entry.getModel();
Control nameControl = formToolkit.createLabel(labelPanel, null);

IObservableValue modelValue = BeanProperties.value(model.getClass(), Model.PROPERTY_NAME).observe(model);
IObservableValue widgetValue = SWTObservables.observeText(nameControl);

DataBindingContext context = new DataBindingContext();
UpdateValueStrategy widgetToModel = new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER);
UpdateValueStrategy modelToWidget = new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE);
context.bindValue(widgetValue, modelValue, widgetToModel, modelToWidget);

更改模型后,标签文本会相应更新。但是标签没有调整大小。因此,当模型更改为更长的名称时,新名称将被切断。当它变为较短的名称时,标签会占用更多的空间。

我考虑添加属性更改侦听器(模型名称或标签文本),只要名称发生更改,就会在标签的父级上调用layout,但这样做不会破坏数据的用途结合?

1 个答案:

答案 0 :(得分:1)

你可以用

绑定控件的大小
WidgetProperties.size().observe(nameControl);

到控件文本(你已经拥有的observable)并在UpdateStrategy中提供一个IConverter,它可以从文本转换为size(因此每次文本更改时都可以计算文本,然后设置控件的大小) 。 确保父项布局管理器

识别标签的大小