Java selectionChange组合框的监听器

时间:2012-02-07 16:47:16

标签: java swing if-statement listener

我想要启用或禁用此组合框,具体取决于前一个组合框中选择的“SDO / OD”(在数据库中编码为10)。当我使用下面的代码时,它给了我下拉列表,但是对于每个选择。我想只在选择“SDO / OD”时才下拉。否则,禁用组合框但允许数据传递记录的空值。我认为它不是在阅读听众。我的问题是为什么会发生这种情况?如何处理Listerner以适应这样的任务?

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

1 个答案:

答案 0 :(得分:3)

Listeners的最佳JComboBoxItemListener,此Listener次点击事件SELECTED/DESELECTED,总是两次