Как мне сделать фильтр для разных параметров?
Поэтому я пытаюсь отфильтровать таблицу по умолчанию в JFrame, набрав текстовое поле. Количество столбцов, которые я могу иметь в своих таблицах по умолчанию, зависит от того, сколько фильтров выбирают пользователи, а также сколько разных столбцов выбирают пользователи (в программе я даю пользователю возможность выбрать количество фильтров / столбцов, которые они хотят выбрать)., Пока что я могу настроить общий фильтр, который выполняет поиск по ВСЕЙ таблице по умолчанию, которая заполняется из другого источника. Вот пример...
Фильтр - это текстовое поле...
filter.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void changedUpdate(DocumentEvent arg0) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Not supported");
}
@Override
public void insertUpdate(DocumentEvent arg0) {
// TODO Auto-generated method stub
String text = filter.getText();
text.trim();
if (text.trim().length() == 0) {
rowSorter.setRowFilter(null);
} else {
rowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text));
}
}
@Override
public void removeUpdate(DocumentEvent arg0) {
// TODO Auto-generated method stub
String text = filter.getText();
text.trim();
if (text.trim().length() == 0) {
rowSorter.setRowFilter(null);
} else {
rowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text));
}
}
});
По сути, это то, что он настраивает текстовое поле так, что, когда вы начинаете печатать, он отфильтровывает таблицу defaultTable, которая отображается пользователю в JFrame, на основе того, что они печатают.
У меня такой вопрос: поскольку количество фильтров зависит от того, что выбирают пользователи, есть ли способ сделать так, чтобы у меня был массив JTextfield, и эти текстовые поля проходили через тот же прослушиватель действий, чтобы у вас было X текстовых полей суммы что вы ищете в таблице.
Я думаю, что вы создаете разные текстовые поля и запускаете эти текстовые поля с помощью кода, который я написал выше, но у вас будет цикл, и вы запустите эту строку в разных вариантах.
rowSorter.setRowFilter(RowFilter.regexFilter(("(?i)" + text), specificColumn));
Я не знаю, есть ли более простой способ сделать это, но я был бы благодарен за предложения.
Спасибо