在最近的乙個程式中,遇到這麼乙個問題,實現jtable的匯入資料,並帶有新增,刪除,修改等功能。基本功能實現後,由於程式方面的需要,保證程式的實用性,需要新增新功能:匯入jtable的資料之後,或者新增,刪除之後使jtable能自動進行排序。查閱相關資料後,以下相關實現方法:
首先需要對table新增tablerowsorter。這一步很簡單,部分code如下:
sorter = new tablerowsorter(histroydatatablemode);
// 設定只有第一列可以排序,其他均不可以
sorter.setsortable(0, true);
for(int i=1; i<8; i++)
histroydatatable.setrowsorter(sorter);
public voidsetsortkeys(list設定排序鍵。此方法建立所提供<? extends rowsorter.sortkey> sortkeys)
list
的乙個副本;對所提供list
的後續更改不影響此defaultrowsorter
。如果排序鍵已更改,則此方法觸發乙個排序。
指定者:類rowsorter
中的setsortkeys
引數:sortkeys
- 新的sortkey
;null
是指定乙個空列表的簡單表示方法,表示檢視應該是未排序的。
丟擲:illegalargumentexception
- 如果sortkey
中的任一值為 null,或者有超出模型範圍的列索引
這個方法是defaultrowsorter類的乙個方法,旨在定義rowsorter的預設排序型別,在自動排序中,這個方法是很重要的,沒有定義該排序型別,那排序就沒有用。之前我沒有查到這個方法之前,僅僅嘗試在tablemodel發生屬性改變時呼叫sorter.sort()方法,但是沒有效果。從方法定義可以看出,需要改方法的引數是乙個list,跟蹤檢視rowsorter類的sortkey構造方法:
public sortkey(int column, sortorder sortorder)
this.column = column;
this.sortorder = sortorder;
}
sortorder引數跟蹤進去:
public enum sortorder
這下真相大白了,setsortkeys的引數是乙個list,list型別是rowsorter.sortkey,sortkey的構造方法是乙個列加上乙個排序型別,那**應如:
// 設定排序建listsortkeys = new arraylist();
sortkeys.add(new rowsorter.sortkey(0, sortorder.ascending));
sorter.setsortkeys(sortkeys);
當然,sortkeys是乙個列,他可以add多個排序方式,按照我的理解,應該是優先使用第0個排序的方式,若有相同的,則繼續按照第1個排序方式,以此類推。我這裡僅僅是對0做了公升序的排序,其他的應該都是一樣。
哦,對了,需要注意的是setsortkeys這個方法的引數是可以為null,為null的意思則是不做排序。
關於提取JTable資料模型的問題
defaulttablemodel tbm defaulttablemodel frame.jtable.getmodel getmodel就是獲得乙個object的模型,所謂模型,就是其資料內容。比如乙個jlist.getmodel jlist實際專上只負責顯示這些資料內容 他關心如何顯示 而li...
資料幫浦匯入步驟及匯入後取樣統計資訊
1.建立資料幫浦匯出目錄,並匯出資料 col owner for a22 col directory path for a66 set linesize 200 set pagesize 9999 select from dba directories create directory expdp ...
PLSQL匯出資料後再次匯入資料庫亂碼
1 從plsql匯出的資料中文是正常的,但是在匯出到資料庫的時候出現了中文亂碼情況 原因查詢 1 檢視資料庫使用的編碼 2 檢視客戶端plsql的編碼 原來的plsql中的編碼nls lang simplified chinese china.zhs16gbk 本機環境 windows 64位,or...