Java 使用组合框筛选JTable结果

Java 使用组合框筛选JTable结果,java,filter,jtable,Java,Filter,Jtable,我有一个用数据填充的表。我有一个组合框,用户可以在其中选择一个选项,点击过滤按钮,表格就会显示过滤结果。我试图使用tableRowSorter.setRowFilter方法,但似乎无法理解它是如何工作的。有人介意解释一下这个方法是如何工作的,或者有什么建议吗?谢谢阅读更多关于。 下面是RowFilter的简单示例,请检查: import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.

我有一个用数据填充的表。我有一个组合框,用户可以在其中选择一个选项,点击过滤按钮,表格就会显示过滤结果。我试图使用tableRowSorter.setRowFilter方法,但似乎无法理解它是如何工作的。有人介意解释一下这个方法是如何工作的,或者有什么建议吗?谢谢

阅读更多关于。 下面是RowFilter的简单示例,请检查:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.RowFilter;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;

public class Example extends JFrame {

    private JTable table;
    private DefaultTableModel model;
    private TableRowSorter<DefaultTableModel> sorter;

    public Example() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        initComponents();
        pack();
        setVisible(true);

    }

    public static void main(String... strings) {
        new Example();
    }

    private void initComponents() {
        JPanel p = new JPanel();
        final JComboBox<String> box = new JComboBox<>(new String[]{"","1","2","3"});
        JButton b = new JButton("filter");
        b.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                RowFilter<DefaultTableModel, Object> rf  = RowFilter.regexFilter(box.getSelectedItem().toString(), 0);
                sorter.setRowFilter(rf);
            }
        });
        p.add(box);
        p.add(b);

        table = new JTable(model = new DefaultTableModel(3,3));
        sorter = new TableRowSorter<DefaultTableModel>(model);
        table.setRowSorter(sorter);

        add(p,BorderLayout.SOUTH);
        add(new JScrollPane(table));
    }
}

可能不是最有效的方法,但您可以使用筛选结果创建一个新表并刷新框架。