Этот вопрос связан с вопросом, упомянутым здесь: [Я хочу читать из текстового файла и записывать в существующий JTable
Я сделал программу, которая может читать из текстового файла и записывать в JTable. Я также создал метод, который позволяет мне динамически искать содержимое JTable и отображать результаты, соответствующие слову. Однако каждую новую запись, которую я пишу в JTable, можно найти с помощью фильтра. НО, когда я загружаю содержимое txt-файла и пытаюсь впоследствии использовать фильтр поиска, результаты не могут быть отображены, JTable исчезает, как только я начинаю вводить что-то в текстовое поле.
Мой код метода поиска выглядит следующим образом:
//Creation and functionality of the Search Field
class TestTableSortFilter extends JPanel {
public TableRowSorter < TableModel > rowSorter = new TableRowSorter < > (table.getModel());
public JTextField searchFilter = new JTextField();
public TestTableSortFilter() {
table.setRowSorter(rowSorter);
JPanel panel = new JPanel(new BorderLayout());
panel.add(new JLabel("Search:"),
BorderLayout.WEST);
panel.add(searchFilter, BorderLayout.CENTER);
setLayout(new BorderLayout());
add(panel, BorderLayout.SOUTH);
add(new JScrollPane(table), BorderLayout.CENTER);
searchFilter.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
String text = searchFilter.getText();
if (text.trim().length() == 0) {
rowSorter.setRowFilter(null);
} else {
rowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text));
}
}
@Override
public void removeUpdate(DocumentEvent e) {
String text = searchFilter.getText();
if (text.trim().length() == 0) {
rowSorter.setRowFilter(null);
} else {
rowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text));
}
}
@Override
public void changedUpdate(DocumentEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
});
} //end TestTableSortFilter
} //end class table sort & creating the sorter for Search
throw new UnsupportedOperationException("Not supported yet.");
... не поможет ... - person MadProgrammer   schedule 13.07.2015Exception
, иначеDocumentListener
перестанет отвечать и сделает EDT нестабильным. - person MadProgrammer   schedule 13.07.2015JTable#setModel(newModel)
. - person aterai   schedule 13.07.2015JXTable
из проекта SwingX имеет встроенную поддержку поиска с использованиемJXSearchField
иJXSearchPanel
- person Robin   schedule 13.07.2015table.setModel(new DefaultTableModel(col,0));
. Это тот, который нужно изменить? - person Gabri   schedule 13.07.2015