如何解决我如何在两个日期之间创建一个TableRowShorter
combobox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent arg0) {
if(arg0.getStateChange()==ItemEvent.SELECTED) {
if(!combobox.getSelectedItem().toString().equals(items[0])) { //items[] for the items of the combobox.
DefaultTableModel table1 = (DefaultTableModel)table.getModel();
String search =combobox.getSelectedItem().toString();
TableRowSorter<DefaultTableModel> tr = new TableRowSorter<DefaultTableModel>(table1);
table.setRowSorter(tr);
tr.setRowFilter(RowFilter.regexFilter(search));
}
}
}
});
我使用此代码。当我选择组合框的一个项目时,它会对所选项目进行排序。我有第二个组合框。假设combobox的名称为combobox2,而combobox2的项目为“过去2个月”。
表格的第一列是日期。当我选择combobox2的项目(过去2个月)时,我想对表格进行排序。我只想查看最长2个月的行。
例如,如果我发送了字符串(“ 01/01/2020”),则只希望看到此日期之后带有(“ 01/01/2020”)的行。
但是使用此代码,我只能看到我发送的日期。我希望我能解释清楚。如果您需要,我可以分享更多代码。
解决方法
例如,如果我发送了字符串(“ 01/01/2020”),则只希望看到此日期之后带有(“ 01/01/2020”)的行。
您需要使用“日期过滤器”。
例如,此过滤器将返回特定日期之后的所有日期:
RowFilter.dateFilter(ComparisonType.AFTER,new Date());
阅读RowFilter
API,了解可以使用的其他过滤器。
注意:
您不应在模型中存储字符串值。您应该将日期存储在代表日期的对象中,然后使用自定义渲染器格式化日期。这样可以使上方的过滤器正常工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。