我正在尝试在 JTable 中的两个值之间进行“实时搜索”。假设这是我的桌子:
我已经用这样的东西进行了正常搜索
jTextField1.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
String search = jTextField1.getText();
if (search.trim().length() == 0) {
rowSorter.setRowFilter(null);
} else {
rowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + search));
}
}
@Override
public void removeUpdate(DocumentEvent e) {
String search = jTextField1.getText();
if (search.trim().length() == 0) {
rowSorter.setRowFilter(null);
} else {
rowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + search));
}
}
@Override
public void changedUpdate(DocumentEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
}); `
我现在想做的是做这样的事情,但是你可以看到两个值“从到”,并且只显示这些记录,它们介于最小值、最大值和等于它们之间。假设从150-300。但我不知道该怎么做,我试过结合 2 个过滤器,比如
List<RowFilter<Object,Object>> filters = new ArrayList<RowFilter<Object,Object>>(2);
filters.add( RowFilter.numberFilter(ComparisonType.AFTER, Float.parseFloat(min)) );
filters.add( RowFilter.numberFilter(ComparisonType.BEFORE, Float.parseFloat(max)) );
RowFilter<Object, Object> rf = RowFilter.andFilter(filters);
rowSorter.setRowFilter(rf);
但这不起作用。有谁知道如何做到这一点?我开始放弃了......啊哈我表中的数据是对象,我正在使用默认表模型。正如你所看到的,我刚开始学习java,很抱歉我的英语不好:) 干杯。