我使用以下代码将标签的文本值绑定到我的后端模型(省略了一些细节):
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
每当名称更改时都会调用标签的父级,但这不会破坏数据绑定的目的吗?