如何根据另一个组合框中的选择禁用组合框?

如何根据另一个组合框中的选择禁用组合框?

问题描述:

我有这块代码给了我一个组合框的结果,我希望它忽略组合框并在上面的ROLE组合框下面的一个选择值“SDO/OD”时禁用它又名fcbRole。下面的代码从第一部分启用该框,但第二部分不启动。它给了我一个警告:“这个领域是必需的”......你之前看过类似的东西吗?如何根据另一个组合框中的选择禁用组合框?

我一直在摆弄:​​

  fcbRole.addSelectionChangedListener(new SelectionChangedListener<ModelData>() 
    { 
     @Override 
     public void selectionChanged(SelectionChangedEvent<ModelData> se) 
     { 
      if ("SDO/OD".equals(this.toString())) 
          { 
           fcbOfficeRegion.enable(); 
          } else 
          { 
           fcbOfficeRegion.disable(); 
          } 
     }  

    }); 
+2

作为一个侧面说明,使用''==不比较字符串。使用'.equals'。 – aioobe 2012-02-01 15:40:37

+0

你知道'toString()'的默认实现,不是吗?我敢打赌,你总是碰到'!='SDO/OD''的情况,对吧?这将有两个原因:1.“!=”和“==”比较内存地址,即如果对象相同,则不是如果它们具有相同的值。 2.'toString()'在默认情况下会返回类名和一些散列,并且您在创建的'SelectionChangedListener'上调用'toString()'。 – Thomas 2012-02-01 15:41:20

+1

反正有点多余;为什么第二次比较(一旦你停止使用'==')?如果它是平等的,它是平等的;只有一个选择。 – 2012-02-01 15:43:15

不要使用==!=比较Strings,改用:

if("SDO/OD".equals(this.getStringName()) // or make sure you override toString() 
    // enable 
else 
    // disable 

对于字符串值相等,应该使用equals()方法,而不是运营商。运营商确实参考平等检查。

所以,你的代码更改为:

 if ("SDO/OD".equals(this.toString())) 
     { 
      fcbOfficeRegion.enable(); 
     } else 
     { 
      fcbOfficeRegion.disable(); 
     } 
+0

它仍然给我红色的轮廓周围的组合框警告:“此字段是必需的”..基本上,我想通过在fcbRole组合框中选择SDO/OD,然后启用()fcbOfficeRegion。但是,当你在fcbRole中有其他的东西时忽略/禁用fcbOfficeRegion。 – 2012-02-01 15:58:31