我的应用程序中有 2 个复选框。 这些复选框是相互独立的,即可以选择一个,也可以同时选择两个,或者都不选择。
复选框过滤表模型,表每 10 秒刷新一次。
每次刷新之前,我都会获取每个复选框的状态,如下所示:
checkM = checkboxM.isSelected();
checkI = checkboxI.isSelected();
刷新发生后,我尝试将复选框设置为如下内容:
checkboxM.setSelected(checkM);
checkboxI.setSelected(checkI);
然后是我的 if 语句,以找出选择了哪些框,这就是问题所在,因为我似乎无法弄清楚如何应用过滤器 a) 两个复选框都被选中,因此显示包含内容的所有行“A”和“B” b) 选中其中一个复选框,仅显示“A”或“B”或不显示任何行
if ((checkM = false) || (checkI = false)){
newFilter("",4);
}
else{
newFilter("A",4);
newFilter("B",4);
}
//this is my filter
private void newFilter(String x, Integer n) {
sorterDG = new TableRowSorter (modelImbalanceTable);
sorterDG.setRowFilter(RowFilter.regexFilter(x,n));
tableDG.setRowSorter(sorterDG);
tableDG.tableChanged(new TableModelEvent(tableDG.getModel())) ;
tableDG.repaint();
}
最佳答案
我不太明白你的逻辑。但如果你的逻辑是正确的,那么你的问题只是一个简单的拼写错误。您在可能想使用 ==
的地方使用了 =
。 =
为 checkM 和 checkI 分配新值,同时计算设置值。 ==
将比较该值。除此之外,比较 boolean 值来获取 boolean 值并没有多大帮助。只需按原样使用 boolean 值即可。
但是,这意味着您当前始终执行 else
路径,而不是 if
路径。在您的 if
路径中,您遇到了下一个问题。您不会累积过滤器,但首先设置过滤器A
,然后设置B
。因此,在运行时,无论您检查了什么,您最终都会过滤 B
。
你的意思可能是这样的
if (checkM && checkI) {
newFilter("A|B", 4);
} else if (checkM) {
newFilter("A", 4);
} else if (checkI) {
newFilter("B", 4);
} else {
newFilter("", 4);
}
关于java - 过滤表模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36901382/