2013-11-10 5 views
0

я стараюсь фильтровать JTable с этим кодом:Как фильтровать нечувствительны к регистру в JTable

String eingabe = eingabeF.getText(); 
RowFilter.regexFilter(".*" + eingabe + ".*", 1) 

это работает очень хорошо. НО я хочу отфильтровать его без учета регистра. Все значения в моей колонке «1» имеют верхние регистры в начале.

Я попытался это:

String eingabe = eingabeF.getText(); 
setRowFilter(RowFilter.regexFilter(("?i") + Pattern.quote(".*" + eingabe + ".*"), 1)); 

, но я всегда получаю следующее сообщение об ошибке-сообщение:

Exception in thread "AWT-EventQueue-3" java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0 
?i\Q.*f.*\E 
+0

Это '(? I)' не '? I'. вы должны добавить скобки. –

+0

Почему бы не написать: 'RowFilter.regexFilter (" (? I). * "+ Pattern.quote (eingabe) +". * ", 1)' –

+0

oh Спасибо =) PERFEKT – progNewbie

ответ

0

Прежде всего, встроенный регистронезависимы флаг "(?i)", а не ("?i"). Во-вторых, вам не нужно помещать ".*" вокруг вашей строки. Соединитель найдет его в любом месте поля, если вы его не окружаете "^" и "$". Гораздо проще инициализировать фильтр следующим образом:

RowFilter.regexFilter("(?i)" + eingabe, 1); 
Смежные вопросы