2014-02-06 91 views
0

我在我的gui中有一个Jtable,我在其中投影了一些结果!我还有3个用作过滤器的JCheckBox!问题是,当我第一次检查JCheckBox时,结果被正确过滤,但是当我取消选中JCheckBox时,结果与应用的过滤器相同,我不想这么做!删除过滤后的Jtable虚假结果

JCheckBox的监听器:

cEntertainment.addItemListener(new ItemListener(){ 
     public void itemStateChanged(ItemEvent e){ 
      int state = e.getStateChange(); 
      if (state == ItemEvent.SELECTED) { 
       man.setEnabled(true); 
       woman.setEnabled(true); 
       child.setEnabled(true); 
       newFilter(cEntertainment.getText()); 
      } else { 
       man.setEnabled(false); 
       man.setSelected(false); 
       woman.setEnabled(false); 
       woman.setSelected(false); 
       child.setEnabled(false); 
       child.setSelected(false); 

      } 
     } 
    }); 

newFilter方法:

private void newFilter(String type){ 
    RowFilter<DefaultTableModel,Object> rf = null; 
    try{ 
     rf = RowFilter.regexFilter(type); 
    }catch(java.util.regex.PatternSyntaxException e){ 
     return; 
    } 
    sorter.setRowFilter(rf); 
} 
+0

1)你最后一个问题没有得到回答的原因是你提供的信息很少。看看[**如何创建一个最小,完整,测试和可读的示例**](http://stackoverflow.com/help/mcve)。 2)使用Java命名约定。 Varaibles以小写字母开头。 –

+0

告诉我还有什么我应该上传?!屏幕截图?我已经上传了我认为存在错误的代码!我是新手!请帮帮我 !变量修复!问题存在! – gimbo

+0

您应该查看该链接并遵循其指导原则。 –

回答

2

的问题似乎是被选中该复选框,当你永远不删除该过滤器添加到行排序。这样,无论复选框状态如何,过滤器都将工作。你应该做这样的事情:

cEntertainment.addItemListener(new ItemListener(){ 
    public void itemStateChanged(ItemEvent e){ 
     int state = e.getStateChange(); 
     if (state == ItemEvent.SELECTED) { 
      ... 
      newFilter(cEntertainment.getText()); 
     } else { 
      ... 
      removeFilter(); 
     } 
    } 
}); 

... 

private void newFilter(String type) { 
    RowFilter<DefaultTableModel,Object> rf = null; 
    try{ 
     rf = RowFilter.regexFilter(type); 
    }catch(java.util.regex.PatternSyntaxException e){ 
     return; 
    } 
    sorter.setRowFilter(rf); 
} 

private void removeFilter() { 
    sorter.setRowFilter(null); 
} 

按照DefaultRowSorter.setRowFilter(RowFilter filter)的javadoc(言论是我的):

设置确定哪些行,如果有的话,应该被隐藏从视图 过滤器。过滤器在分拣前应用。 值为null 表示应包含模型中的所有值。

+1

Mea Culpa(我的错)!问题解决了!感谢您的解决方案和链接! – gimbo

+0

@imimbo欢迎您! – dic19