代码之家  ›  专栏  ›  技术社区  ›  Rajesh Kumar Dash

模型未更新时,如何禁用按钮?

  •  0
  • Rajesh Kumar Dash  · 技术社区  · 11 年前

    在我的UI中,我有2个文本字段和2个按钮。我使用jface数据绑定来绑定文本字段,我正在进行验证,根据验证的成功与否,模型会更新,否则不会。我希望我的按钮做出相应的响应。就像我的模型没有更新一样,我想禁用我的按钮。还有一件事我不想做硬编码。有什么办法吗在没有硬编码的情况下。

    换句话说,我想把一个按钮绑定到文本字段,这样当文本字段有一些不需要的值时,按钮就应该被禁用。另一方面,我在文本字段上进行数据绑定,当文本字段没有合适的值时会很小心,它不会更新其模型。然后,当值不合适时,我想禁用按钮,我可以这样做吗?上面的任何指针都有帮助我经常。

    2 回复  |  直到 11 年前
        1
  •  0
  •   sambi reddy    11 年前

    你可以利用下面的监听器。将听众添加到您的 Observable

     org.eclipse.core.databinding.observable.value.IValueChangeListener
    
        2
  •  0
  •   paul    9 年前

    经过一些研究,我发现我必须观察按钮的启用/禁用属性,并将其与当前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());
                                    }
                                }));
    

    }