随笔 - 630  文章 - 7 评论 - 47 阅读 - 49万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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

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

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

JTable动态刷新数据

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

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

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

直接上代码吧:

复制代码
复制代码
 1 private void InitTable() {       //初始化table
 2         InitColumnName();
 3         InitRowData();
 4         tableModel = new DefaultTableModel(rowData, columnName);
 5         table = new JTable(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     }
复制代码
复制代码

 

定时刷新:

 

复制代码
复制代码
1 tableModel.getDataVector().clear();
2 InitRowData();
3 //table.validate();        频繁刷新造成空指针异常
4 //table.updateUI();
5 scrollPane.validate();
6 //scrollPane.updateUI();
复制代码
复制代码

 

附录:

  public void validate()

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

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

 

paint
update
posted on   网络大豆  阅读(599)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2011-09-29 Global Services
点击右上角即可分享
微信分享提示