2012-02-07 3 views
1

이전 콤보 상자의 "SDO/OD"(데이터베이스에 10으로 코딩 됨) 선택에 따라이 콤보 상자를 활성화하거나 비활성화 할 수 있습니다. 다음 코드를 사용하면 드롭 다운 목록을 제공하지만 모든 선택 항목을 제공합니다. "SDO/OD"가 선택 될 때만 드롭 다운을 원합니다. 그렇지 않으면 콤보 상자를 비활성화하고 데이터가 레코드에 대해 null을 전달할 수 있도록합니다. 나는 그것이 청취자를 읽고 있다고 생각하지 않는다. 내 질문은 왜 이런 일이 일어나는가하는 것입니다. 어떻게 그러한 작업을 수용하기 위해 Listerner를 처리합니까? JComboBox에 대한 ListenersJava selection 콤보 상자의 청취자 변경

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

내가 당신의 질문을 이해하지 항상 두 번 이벤트를 SELECTED/DESELECTED을 발사했다. 해당 콤보 상자의 사용자 선택에 따라 콤보 상자를 활성화/비활성화하려고합니까? – Dodd10x

답변

3

베스트 ItemListener이며,이 Listener

+0

그 모습은 어떨까요? 내가 사용하고있는 코드가 JComboBox 타입이라고 생각하지 않습니다. 제안을 추가하면 Listener를 바꿀 때 다시 오류가 발생합니다. 예 : –

+0

예 : http://stackoverflow.com/a/8731035/714968 – mKorbel

+0

감사합니다. ItemListener는 실제로 최고입니다. – shift66