Вы звоните RowFilter.regexFilter(filterTF.getText(), 0);
в UserPage_Admin()
конструктор. Как он должен читать текст из фильтра TF. Я думаю, вы должны назвать его от действий прослушивателя событий, присвоенного JButton
, который будет вызываться при подаче (щелчок) текста следующим образом:
submitButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String text = filterText.getText();
if (text.length() == 0) {
sorter.setRowFilter(null);
} else {
sorter.setRowFilter(RowFilter.regexFilter(text, 0));
}
}
});
Если вы хотите использовать фильтрацию на событиях пользовательского типа ключа, добавьте key listener в текстовое поле вы берете входную фильтрующую строку.
filterTxtFeild.addKeyListener(new KeyAdapter() {
public void keykeyReleased(KeyEvent evt) {
// on each key type event filter.
// put your filter code as submit button
}
});
Однако, как это предложено в комментариях ниже, чтобы работать с Свинг компонент текста, один должен был использовать Document.addDocumentListener(DocumentListener)
. Текстовый компонент Swing использует Document для представления его содержимого. События документа происходят, когда содержимое документа каким-либо образом изменяется. Добавьте документ слушателя следующим образом:
filterTxtFeild.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
// put your filter code here upon data insertion
}
@Override
public void removeUpdate(DocumentEvent e)
{
//put your filter code here upon data removal
}
@Override
public void changedUpdate(DocumentEvent e) {}
});
Edit: Почему DocumentListener предпочтительнее?
Если мы хотим проверки входных данных в источнике данных, используя KeyEvent
при фильтрации данных вы найдете, что это не отражает нажатия клавиш и события ввода данные пользователя отправляются на слушателей, прежде чем они обрабатываются в источнике данных. предположим, что, когда мы хотим ввести user name
, кто-то вводит текст, например "$%^&"
. При таком недопустимом входе KeyEvent
все равно будет запущен, даже если в источник данных не были внесены изменения. Но, DocumentListeners
уведомляются только в том случае, если в источник данных были внесены действительные изменения. Компоненты ввода данных создают события, в которых validator
может прослушивать asynchronously
, никогда не должно быть modify the contents текстового компонента из DocumentListener
. Если мы это сделаем, программа, скорее всего, закроется.
Почему вы не читаете Swing-учебник по ' Как использовать таблицы для рабочего примера ??? Вы уже много раз получали ссылки на учебник. – camickr