两个值之间的Java JTable行分类器
我试图在JTable中的两个值之间进行“实时搜索”。假设这是我的桌子: 我用这样的东西做过正常的搜索两个值之间的Java JTable行分类器,java,regex,jtable,rowfilter,rowsorter,Java,Regex,Jtable,Rowfilter,Rowsorter,我试图在JTable中的两个值之间进行“实时搜索”。假设这是我的桌子: 我用这样的东西做过正常的搜索 jTextField1.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { String search = jTextField1.getText();
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”,并且只显示这个记录,其中的值介于min和max之间,并且等于它们。比如说从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);
List filters=newarraylist(2);
filters.add(RowFilter.numberFilter(ComparisonType.AFTER、Float.parseFloat(min));
filters.add(RowFilter.numberFilter(ComparisonType.BEFORE,Float.parseFloat(max));
RowFilter rf=RowFilter.andFilter(过滤器);
行分类器。设置行过滤器(rf);
但这是行不通的。有人知道怎么做吗?我开始放弃了。。。啊哈,表中的数据是对象,我使用的是默认的表模型。正如你所看到的,我刚刚开始学习java,很抱歉我的英语不好:)干杯
创建
RowFilter.numberFilter(…)
时,需要指定表中要对其进行比较的列。如果不指定索引,默认值为所有列。是的,我知道,但我认为它构造的过滤器是错误的。@Sniego,发布你的文章,使用你知道的信息演示问题,这样我们就不必猜测你可能在做什么或不在做什么。这就是问题所在,除了这个搜索函数,我什么都没有。此行筛选器只是我预测如何解决我的问题。但事实上,我只是不知道如何做分拣机基于最小最大值。如果你真的想,我可以张贴这个应用程序的代码,但只有搜索功能和表。
filters.add( RowFilter.numberFilter(ComparisonType.AFTER, Float.parseFloat(min)) );
filters.add( RowFilter.numberFilter(ComparisonType.BEFORE, Float.parseFloat(max)) );