Как отфильтровать строку jtable, начиная с напечатанного символа в поле jtextfield - PullRequest
0 голосов
/ 22 мая 2018

Я создал фильтр строк JTable, который хорошо работает и фильтрует строки по типу ввода в поле JTextfield, но он фильтрует по типизированному символу, присутствующему в любом месте строки , тогда как я хочу отфильтровать строку, начинающуюся с типизированного символа.Есть ли для него какой-либо флаг регулярного выражения?

Код фильтра строки моей таблицы:

public static void setFilter(JTable table,String value) {
    sorter = new TableRowSorter<>((DefaultTableModel)table.getModel());
    table.setRowSorter(sorter);
    RowFilter<DefaultTableModel, Object> rf = null;
    try {
        rf = RowFilter.regexFilter("(?i)" + value, columnIndex);   //("(?i)" for case insensitive filter
    } catch (java.util.regex.PatternSyntaxException e) {
        return;
    }
    sorter.setRowFilter(rf);
}

1 Ответ

0 голосов
/ 23 мая 2018
rf = RowFilter.regexFilter("(?i)" + value, columnIndex);  

, но он фильтрует в соответствии с набранным символом, присутствующим в любом месте строки

Он фильтрует на основе данных, найденных в столбце, указанном в columnIndex.

Я хочу отфильтровать строку, начинающуюся с напечатанного символа.

Если вы говорите, что хотите фильтровать на основе сопоставления по первому символу данных, найденных в указанном столбце, тогда вы сможете использовать:

rf = RowFilter.regexFilter("^" + value, columnIndex);  

ЧтениеAPI для класса Pattern.В разделе Boundary Matchers показано, что «^» используется для сопоставления символов в начале данных.

...