[英]Java JTable rowsorter between two values
我正在尝试在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.");
}
}); `
我现在想要做的是这样的事情,但是正如您看到的那样,有两个值“ from-to”,并且仅显示介于最小,最大和等于它们之间的该记录。 假设从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,对我的英语不好深感抱歉:)干杯。
filters.add( RowFilter.numberFilter(ComparisonType.AFTER, Float.parseFloat(min)) );
filters.add( RowFilter.numberFilter(ComparisonType.BEFORE, Float.parseFloat(max)) );
创建RowFilter.numberFilter(...)
,需要指定要在表中进行比较的列。 如果不指定索引,则默认为所有列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.