筛选 table 个模型
filtering a table model
我在一个应用程序中有 2 个复选框。
复选框相互独立,即可以选择一个,也可以同时选择两个,也可以都不选择。
复选框筛选 table 模型,table 每 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();
}
我不太理解你的逻辑。但如果你的逻辑是正确的,那么你的问题只是一个简单的错字。您在可能想使用 ==
的地方使用了 =
。 =
为 checkM 和 checkI 赋新值,同时计算为设定值。 ==
将比较该值。除此之外,比较布尔值以获得布尔值并不是很有帮助。只需按原样使用布尔值。
然而,这意味着您目前总是执行您的 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);
}
我在一个应用程序中有 2 个复选框。 复选框相互独立,即可以选择一个,也可以同时选择两个,也可以都不选择。
复选框筛选 table 模型,table 每 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();
}
我不太理解你的逻辑。但如果你的逻辑是正确的,那么你的问题只是一个简单的错字。您在可能想使用 ==
的地方使用了 =
。 =
为 checkM 和 checkI 赋新值,同时计算为设定值。 ==
将比较该值。除此之外,比较布尔值以获得布尔值并不是很有帮助。只需按原样使用布尔值。
然而,这意味着您目前总是执行您的 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);
}