簡體   English   中英

如何過濾 JTable 中的行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM