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的项是“last2month”。
表格的第一列是日期。当我选择combobox2的项目(最近2个月)时,我想对表进行排序。我只想看到最多2个月大的行。
例如,如果我发送了字符串(“01/01/2020”),我只想看到带有(“01/01/2020”)和在此日期之后的行。
但是用这个代码我只能看到我发送的日期。我希望我解释得很好。如果你们需要我可以分享更多的代码。
1条答案
按热度按时间gijlo24d1#
例如,如果我发送了字符串(“01/01/2020”),我只想看到带有(“01/01/2020”)和在此日期之后的行。
你需要使用“日期过滤器”。
例如,此筛选器将返回特定日期之后的所有日期:
阅读
RowFilter
你可以使用的其他过滤器的api。注:
不应在模型中存储字符串值。应该将日期存储在表示日期的对象中,然后使用自定义呈现器格式化日期。这将使上面的过滤器正常工作。