jtable自动更新mysql数据_JTable动态刷新数据

本文介绍如何在Java Swing应用中使用JTable进行实时数据更新,特别是在需要从MySQL数据库获取动态数据时。通过调整JTable的模型,如使用Vector作为数据模型,并结合updateUI方法,可以实现界面的自动刷新。同时,文章提醒在频繁刷新时需要注意避免空指针异常,并提供了validate和repaint方法的使用说明。
摘要由CSDN通过智能技术生成

http://www.cnblogs.com/fnlingnzb-learner/p/6025408.html

注意下面几个方法的应用场景,不限于JTable,其他swing组件一样

————————————————————————————————————————————————————————————————————————————————

最近在做一个纯java有关的小软件,因为需要做前端,所以我用到了swing。swing里面涵盖的细节真的是太多了,稍一不留神,你的软件就面临易崩溃或者界面极度丑陋的状况。不多说了,谈谈这次的主题JTable吧。

由于我的软件需要定时刷新界面,所以需要对JTable进行实时更新,但又不仅仅是单纯的添加数据,所以造成了很多麻烦。

其实最简单的,你用 Vector 做 table 的模型的话,只要改变 Vector 中的数据,updateUI,表格就刷新了。其中,第一个是个 Vector 的 Vector,是 data,就是说先把一行的 data 放在一个 Vector 里,然后把这些行Vector 放到一个总的 Vector 里,而第二个是 Vector是title。

直接上代码吧:

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 private void InitTable() { //初始化table

2 InitColumnName();

3 InitRowData();

4 tableModel = newDefaultTableModel(rowData, columnName);

5 table = newJTable(tableModel);

6 TableColumn firstColumn = table.getColumnModel().getColumn(0);

7 firstColumn.setMaxWidth(150);

8 firstColumn.setMinWidth(150);

9 TableColumn secondColumn = table.getColumnModel().getColumn(1);

10 secondColumn.setMaxWidth(80);

11 secondColumn.setMinWidth(80);

12 TableColumn thirdColumn = table.getColumnModel().getColumn(2);

13 thirdColumn.setMaxWidth(60);

14 thirdColumn.setMinWidth(60);

15 TableColumn fourthColumn = table.getColumnModel().getColumn(3);

16 fourthColumn.setMaxWidth(120);

17 fourthColumn.setMinWidth(120);

18 TableColumn fifthColumn = table.getColumnModel().getColumn(4);

19 fifthColumn.setMaxWidth(150);

20 fifthColumn.setMinWidth(150);

21 TableColumn sixthColumn = table.getColumnModel().getColumn(5);

22 sixthColumn.setMaxWidth(120);

23 sixthColumn.setMinWidth(120);

24 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

定时刷新:

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 tableModel.getDataVector().clear();

2 InitRowData();

3 //table.validate(); 频繁刷新造成空指针异常

4 //table.updateUI();

5 scrollPane.validate();

6 //scrollPane.updateUI();

48304ba5e6f9fe08f3fa1abda7d326ab.png

附录:

public void validate()

验证此容器及其所有子组件。

使用 validate 方法会使容器再次布置其子组件。已经布置容器后,在修改此容器的子组件的时候(在容器中添加或移除组件,或者更改与布局相关的信息),应该调用上述方法。

public void repaint()

重绘此组件。

如果此组件是轻量组件,则此方法会尽快调用此组件的 paint 方法。否则此方法会尽快调用此组件的 update 方法。

public void updateUI

UIManager 发出的关于 L&F 已经更改的通知。用 UIManager 的最新版本替换当前的 UI 对象。覆盖: 类 JComponent 中的 updateUI另请参见:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值