[英]How can I filter rows in a JTable?
我有一個 JTable 里面有很多字符串。 我在表格上方創建了一個用於用戶輸入的文本框。 我想要一個行過濾器,它可以刪除用戶在文本框中輸入的字符串的行。 請幫我解決這個問題。
從這里:
排序和過濾
在以下示例代碼中,您顯式創建了一個分類器對象,以便稍后使用它來指定過濾器:
MyTableModel model = new MyTableModel(); sorter = new TableRowSorter<MyTableModel>(model); table = new JTable(model); table.setRowSorter(sorter);
然后根據文本字段的當前值進行過濾:
private void newFilter() { RowFilter<MyTableModel, Object> rf = null; //If current expression doesn't parse, don't update. try { rf = RowFilter.regexFilter(filterText.getText(),0); } catch (java.util.regex.PatternSyntaxException e) { return; } sorter.setRowFilter(rf); }
這幾行解決方案似乎有效:
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt)
{
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(((DefaultTableModel) jTable1.getModel()));
sorter.setRowFilter(RowFilter.regexFilter(jTextField1.getText()));
jTable1.setRowSorter(sorter);
}
您可以使用JTable.setAutoCreateRowSorter
,它將使用JTable
的默認行分類器/過濾器
要從kd304中獲取評論,您可以使用GlazedLists 。 在那里,您將使用FilterList作為JTable的輸入,FilterList將負責其余部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.