0

我在应用程序中有 2 个复选框。复选框相互独立,即可以选择一个或两个都可以选择,或者两者都不能选择。

复选框过滤表模型,表每 10 秒刷新一次。

在每次刷新之前,我都会获得每个复选框的状态,如下所示:

checkM = checkboxM.isSelected();
checkI = checkboxI.isSelected();

刷新发生后,我尝试将复选框设置为如下所示:

checkboxM.setSelected(checkM);
checkboxI.setSelected(checkI);

然后是我的 if 语句以找出选择了哪些框,这就是问题所在,因为我似乎无法弄清楚如何应用过滤器 a)两个复选框都被选中,因此显示所有内容为“A”的行和“B” b) 选择其中一个复选框 s0 仅显示“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();
}
4

1 回答 1

4

我真的不遵循你的逻辑。但是,如果您的逻辑是正确的,那么您的问题只是一个简单的错字。您=在您可能想要使用的地方使用了==. =为 checkM 和 checkI 分配新值,同时对设定值求值。==会比较值。除此之外,比较一个布尔值以获得一个布尔值并没有真正的帮助。只需按原样使用布尔值。

但是,这意味着您当前始终执行您的else路径,而不是您的if路径。在你的if路径中,你有下一个问题。您不累积过滤器,但您首先设置 filter A,然后BB因此,在运行时,无论您检查了什么,您总是会最终过滤。

你可能的意思是

if (checkM && checkI) {
    newFilter("A|B", 4);
} else if (checkM) {
    newFilter("A", 4);
} else if (checkI) {
    newFilter("B", 4);
} else {
    newFilter("", 4);
}
于 2016-04-27T21:42:03.773 回答