我正在尝试按文本字段中的值过滤我的表,但每当我向文本字段写任何内容时,表中的所有行都会被过滤(因此没有显示行),即使表中包含该字或数字。
public JTextField filterT = new JTextField();
private TableRowSorter<TableModel> sorter;
sorter = new TableRowSorter<TableModel>(tm); //tm is my table model
filterT.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
String text = filterT.getText();
filter(text);
}
@Override
public void removeUpdate(DocumentEvent e)
{
String text = filterT.getText();
filter(text);
}
@Override
public void changedUpdate(DocumentEvent e) {
String text = filterT.getText();
filter(text);
}
});
private void filter(String text)
{
RowFilter<TableModel, Object> rf = null;
try {
rf = RowFilter.regexFilter(text, 0);
} catch (java.util.regex.PatternSyntaxException ee) {
return;
}
sorter.setRowFilter(rf);
jTable1.setRowSorter(sorter);
}
有什么问题?
答案 0 :(得分:0)
阅读Sorting and Filtering上的Swing教程中有关执行此操作的working example
的部分。
答案 1 :(得分:0)
我认为您可以尝试
DefaultTableModel Model = (DefaultTableModel)jTableName.getModel();
TableRowSorter<DefaultTableModel> tr = new TableRowSorter<DefaultTableModel>(Model);
jTableName.setRowSorter(tr);
tr.setRowFilter(RowFilter.regexFilter(JtextfieldName.getText().trim()));