Java 当模型未更新时,如何禁用按钮?
在我的UI中,我有2个文本字段和2个按钮。我正在使用jface数据绑定绑定文本字段,我正在进行验证,根据验证成功与否,模型将不会更新。我希望我的按钮做出相应的响应。例如,如果我的模型没有更新,我希望禁用我的按钮。我还需要做一件事我不想做硬编码。所以没有硬编码有什么方法可以做到这一点Java 当模型未更新时,如何禁用按钮?,java,data-binding,swt,jface,Java,Data Binding,Swt,Jface,在我的UI中,我有2个文本字段和2个按钮。我正在使用jface数据绑定绑定文本字段,我正在进行验证,根据验证成功与否,模型将不会更新。我希望我的按钮做出相应的响应。例如,如果我的模型没有更新,我希望禁用我的按钮。我还需要做一件事我不想做硬编码。所以没有硬编码有什么方法可以做到这一点 另一方面,我想将一个按钮绑定到文本字段,这样当文本字段有一些不需要的值时,按钮就应该被禁用。另一方面,我在文本字段上进行数据绑定,当文本字段没有适当的值时,它将不会更新其模型。然后,当值不合适,我可以这样做。任何关于
另一方面,我想将一个按钮绑定到文本字段,这样当文本字段有一些不需要的值时,按钮就应该被禁用。另一方面,我在文本字段上进行数据绑定,当文本字段没有适当的值时,它将不会更新其模型。然后,当值不合适,我可以这样做。任何关于这个的指针都会对我有很大帮助。你可以利用下面的侦听器。将侦听器添加到您的
可观察的
org.eclipse.core.databinding.observable.value.IValueChangeListener
经过一些研究,我发现我必须观察按钮的enable/disable属性,并将其与当前emf数据绑定上下文绑定。下面给出了我使用的函数的详细信息:
void bindEnablementButtonToValidationStatus(Button button, EMFDataBindingContext ctx) {
IObservableValue buttonEnable = SWTObservables.observeEnabled(button);
IObservableValue validationStatus = new AggregateValidationStatus(
ctx.getValidationRealm(),
ctx.getBindings(),
AggregateValidationStatus.MAX_SEVERITY);
ctx.bindValue(buttonEnable, validationStatus,
new EMFUpdateValueStrategy(
UpdateValueStrategy.POLICY_NEVER),
new EMFUpdateValueStrategy().setConverter(
new Converter(IStatus.class, Boolean.TYPE) {
public Object convert(Object fromObject) {
return new Boolean(((IStatus)fromObject).isOK());
}
}));
}