如何获得过滤后的模型?
我正在使用JTables显示用户可以过滤的信息,如果用户在过滤后保存,我想将过滤后的表保存到文本文件中以保持持久性(意味着任何过滤掉的内容都不会保存到文本文件中)。
对于过滤我只是按照本教程的过滤部分: http : //download.oracle.com/javase/tutorial/uiswing/components/table.html#sorting并且它工作正常,但我不确定是否有任何方法我可以获得当前显示的模型,而不是包含尚未过滤掉的所有内容的基础模型。
有什么方法可以用我过滤的方式来做到这一点吗?
谢谢!
向表中询问其行数(使用getRowCount()
),这将返回已过滤(可见)行的数量。 从0到rowCount迭代,使用convertRowIndexToModel()
将每个行索引转换为模型索引,并向模型询问每个模型索引处的数据以构建过滤(可见)数据的列表。
此代码显示了如何执行此操作。 请注意,按下按钮后,B行不会打印到输入。
import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.RowFilter; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; import javax.swing.table.TableRowSorter; import javax.swing.JButton; import java.awt.BorderLayout; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class JTableFilterDemo { public static void main(String[] args) { Object[][] data = { { "A", 5 }, { "B", 2 }, { "C", 4 }, { "D", 8 } }; String columnNames[] = { "Item", "Value" }; TableModel model = new DefaultTableModel(data, columnNames) { public Class> getColumnClass(int column) { return getValueAt(0, column).getClass(); } }; JTable table = new JTable(model); RowFilter