2012-02-01 108 views
0

我有這塊代碼給了我一個組合框的結果,我希望它忽略組合框並在上面的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

回答

2

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

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

對於字符串值相等,應該使用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

相關問題