• JTable动态刷新数据


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

     


    public void repaint()

    重绘此组件。

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

    public void updateUI

    UIManager 发出的关于 L&F 已经更改的通知。用 UIManager 的最新版本替换当前的 UI 对象。覆盖: 类 JComponent 中的 updateUI另请参见:
  • 相关阅读:
    Forest Program(dfs方法---树上的环)
    RMQ+差分处理(Let Them Slide)Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)
    线段树维护最后一个0的位置(Restore Permutation)Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)
    n*n矩阵 每行每列XOR为0(思维)
    区间DP(入门)括号匹配
    Dijkstra(模板)
    线段树--扫描线(模板)自下而上
    后缀数组 LCP--模板题
    状压DP--Rotate Columns (hard version)-- Codeforces Round #584
    01背包方案数(变种题)Stone game--The Preliminary Contest for ICPC Asia Shanghai 2019
  • 原文地址:https://www.cnblogs.com/cuizhf/p/7611546.html
Copyright © 2020-2023  润新知