2012-02-07 72 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