JTable пользовательский RowFilter?
Примеры RowFilter только сравнивают текст, но как фильтровать строки, связанные с определенными свойствами?
мой класс модели данных
class MyDataModel
{
private ArrayList<MyFile> data; // for the rows data
...
class Myfile
{
private boolean error; // file name issues
private boolean ignored; // file ignored for process
private boolean exception; // file processed no matter other conditions
...
так как мне отфильтровать строки, где MyFile имеет какое-то свойство true (или даже более сложные тесты в этих полях)
Спасибо
2 ответа
Решение
Что вы подразумеваете под сравнением текста? Вы добавили свой фильтр и переопределенный метод include?
boolean include(RowFilter.Entry<? extends M,? extends I> entry)
Документ API здесь RowFilter сам объясняет, как вы можете фильтровать на основе целого числа / числа или на основе любого типа свойства
RowFilter<Object,Object> filter = new RowFilter<Object,Object>()
{
public boolean include(Entry<? extends Object, ? extends Object> entry)
{
int rowID=(Integer)entry.getIdentifier();
FilesTableModel data=(FilesTableModel) entry.getModel();
return data.isVisible(rowID);
}
};
TableRowSorter<FilesTableModel> sorter = new TableRowSorter<FilesTableModel>(data);
sorter.setRowFilter(filter);
table.setRowSorter(sorter);