繁体   English   中英

Java JTable在两个值之间进行行排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM