关于javaswing table的数据动态更新
一直用web写程序,最近有同学交我帮忙写个java软件,写前端时用了swing,发现swing里面的小细节非常多,比如列表,表格的动态更新什么的,细节很重要,一个不小心整个界面都崩溃,显示不出来。
由于我写的软件需要定时刷新界面,所以需要对JTable进行实时更新,对于动态更新其实最简单的,就是用 Vector 做 table 的模型,只要改变 Vector 中的数据,updateUI,表格就刷新了。其中,第一个是个 Vector 的 Vector,是 data,就是说先把一行的 data 放在一个 Vector 里,然后把这些行Vector 放到一个总的 Vector 里,而第二个是 Vector是title。
以下为简单的代码:
Vector<String> columnNames = new Vector<String>(); //设置列名 columnNames.add("活动事项"); columnNames.add("日期"); columnNames.add("资金流动"); columnNames.add("资金流动说明"); columnNames.add("参与人员"); rowData = new Vector<String>(); Vector hang = new Vector();//设置每一行的值 hang.add("data"]); hang.add("data[1"]); hang.add("data[2]"); hang.add("data[3]"); hang.add("data[4]"); rowData.add(hang);//加入rowData中 defaultTableModel = new DefaultTableModel(rowData, columnNames); table = new JTable(defaultTableModel);
接下来我们要动态加入一条数据,代码如下:
rowData = ........方法如上,加入新的数据。
defaultTableModel.getDataVector().clear();
defaultTableModel.setDataVector(rowData, columnNames);
table.updateUI();
这样就能动态的往表格之中添加入一条新的数据,并且显示。