2012-02-07 74 views
1

我有這個組合框,我想啓用或禁用取決於選擇「SDO/OD」,(在數據庫中編碼爲10)在以前的組合框中。當我使用下面的代碼時,它給了我下拉列表,但對於每一個選擇。只有當選擇「SDO/OD」時,我才需要下拉菜單。否則,禁用組合框,但允許數據通過空記錄。我不認爲它正在閱讀Listener。我的問題是爲什麼會發生這種情況?如何處理Listerner以適應這樣的任務?Java selectionChange組合框的監聽器

fcbRole.addSelectionChangedListener(new SelectionChangedListener<ModelData>() 
    { 
     @Override 
     public void selectionChanged(SelectionChangedEvent<ModelData> se) 
     { 
      fcbOfficeRegion.clearSelections(); 
      fcbOfficeRegion.getStore().clearFilters(); 

      if(fcbRole.getValue().equals("SDO/OD") && se.getSelectedItem() != null) 
      { 
       fcbOfficeRegion.enable(); 
       fcbOfficeRegion.setValueField(se.getSelectedItem().get("strValue").toString()); 
       StoreFilter<ModelData> sfRole = new StoreFilter<ModelData>() 
       { 
        @Override 
        public boolean select(Store<ModelData> store, 
          ModelData parent, ModelData item, 
          String property) { 
         String name = item.get("filterDepts"); 
          name = getScc().cleanString(name.toLowerCase()); 
          if (name.contains("(" + fcbRole.getValue().get("strValue") + ")")) 
          { 

          return true; 
          } 
         return false; 

        } 
       }; 

       fcbOfficeRegion.getStore().addFilter(sfRole); 
       fcbOfficeRegion.getStore().applyFilters("fcbOfficeRegion"); 
      } 
      else 
+0

我不明白你的問題。您是否試圖根據該組合框的用戶選擇來啓用/禁用組合框? – Dodd10x 2012-02-07 16:50:41

回答

3

最佳的ListenersJComboBoxItemListener,這Listener觸發的事件SELECTED/DESELECTED,總是兩次

+0

那會怎樣?我不認爲我正在使用的代碼是JComboBox類型。當我添加這個建議時,當我替換Listener時它會返回錯誤。例如 – 2012-02-07 16:54:08

+0

http://stackoverflow.com/a/8731035/714968 – mKorbel 2012-02-07 17:07:29

+0

謝謝,ItemListener真的是最好的 – shift66 2012-05-25 08:16:39