今天遇到需要录入数据,对JTable中的数据进行过滤的问题,上网一搜收获不小,原来JTable自带这功能,那就是TableRowSort这个类了
对前辈的例子稍加修改,就适用自己的业务了~好开心
//table是已经存在的JTable
final TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(
table.getModel());
//根据table的结构创建了TableRowSorter后,还要将这个sort注入给table
table.setRowSorter(sorter);
//filterText是已经存在的JTextField,添加监听:输入后,敲击回车,进行过滤
filterText.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
String text = filterText.getText();
if (text.length() == 0) {
sorter.setRowFilter(null);
} else {
sorter.setRowFilter(RowFilter.regexFilter(text));
}
}
}
});
因为项目需要,以后要一直跟swing打交道了,用的最多的就是JTable了,感觉JTable真是相当复杂的玩意啊,每天进步一点吧!