Wie kann ich bei einer JTable einen Filter ausführen, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird?

Ich erstelle eine Tabelle mit einem Textfeld darunter, in das Sie ein Wort eingeben können, um die Tabelle zu filtern. Es funktioniert, aber ich möchte in der Lage sein, es mit dem eingegebenen Wort zu filtern, aber die Groß- und Kleinschreibung des Wortes zu ignorieren. Gibt es eine Möglichkeit, dies zu erreichen, ohne eine benutzerdefinierte zu erstellenRowFilter?

Sie können diese SCCEE ausführen, um zu sehen, wovon ich spreche. Ich möchte eintippen könnenusa und es wird filternUSA.

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.RowFilter;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

public class TestTableSortFilter extends JApplet {

    private String[] columnNames
            = {"Country", "Capital", "Population in Millions", "Democracy"};

    private Object[][] data = {
        {"USA", "Washington DC", 280, true},
        {"Canada", "Ottawa", 32, true},
        {"United Kingdom", "London", 60, true},
        {"Germany", "Berlin", 83, true},
        {"France", "Paris", 60, true},
        {"Norway", "Oslo", 4.5, true},
        {"India", "New Delhi", 1046, true}
    };

    private JTable jTable = new JTable(data, columnNames);

    private TableRowSorter<TableModel> rowSorter
            = new TableRowSorter<>(jTable.getModel());

    private JTextField jtfFilter = new JTextField();
    private JButton jbtFilter = new JButton("Filter");

    public TestTableSortFilter() {
        jTable.setRowSorter(rowSorter);

        JPanel panel = new JPanel(new BorderLayout());
        panel.add(new JLabel("Specify a word to match:"),
                BorderLayout.WEST);
        panel.add(jtfFilter, BorderLayout.CENTER);

        add(panel, BorderLayout.SOUTH);
        add(new JScrollPane(jTable), BorderLayout.CENTER);


        jtfFilter.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                String text = jtfFilter.getText();

                if (text.trim().length() == 0) {
                    rowSorter.setRowFilter(null);
                } else {
                    rowSorter.setRowFilter(RowFilter.regexFilter(text));
                }
            }
        }); 
    }
}

Gibt es vielleicht etwas, das ich an den weitergeben kann?regexFilter(text), das gibt mir das gewünschte ergebnis?

rowSorter.setRowFilter(RowFilter.regexFilter(text));

Antworten auf die Frage(2)

Ihre Antwort auf die Frage