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另請參見: 

 

轉載請注明出處:http://www.cnblogs.com/fnlingnzb-learner/p/6025408.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM