上周继续用Swing做小项目,其中我在实现数据的查询过程中发现,以往的习惯是更新数据筛选条件都要去数据库中重新查询,但是我把数据库部署到云端发现这样查询数据压力较大,程序运行很慢,最好是少执行数据库的操作,多在本地实现数据的修改,于是我就仔细研究了研究JTable的一些功能,发现JTable的作为容器还是可以往里面添加一些控件来调用RowSorter对表中数据进行筛选和排序的。
一,通过点击列名实现数据排序
单击表头,可以针对这一列进行排序,代码很简单
<span style="white-space:pre"> </span>final TableRowSorter ts;
ts = new TableRowSorter(jTable1.getModel()); //由于使用的NetBeans做的,Jtable已经new好了,故此省略
jTable1.setRowSorter(ts);
只需给要筛选的table设置一个RowSorter即可
二,实现Excel中每列筛选的功能
这里我采用的方式是在往表里添加数据的同时往Jcombobox中也添加item,当然还要考虑重复的问题,这样保证筛选选项都是已出现的数据,我的理想状态是能把Jcombobox放到table的表头TableHeader里面去,但是翻了不少代码发现自己弄不明白,只好暂时放弃,若有高人指点不胜感谢!
<span style="white-space:pre"> </span>//接上面的代码,还是使用获取的TableRowSorter
ts.setRowFilter(RowFilter.regexFilter(jCB1.getSelectedItem().toString(), 0)); //(要匹配的值,列的下标)