2011-08-10 59 views
3

我有一個JXTable其中一個模型是List不同的對象。當我按照選定的列標題對視圖進行排序後,嘗試將視圖索引映射到模型索引時出現問題。使用此代碼,排序後JXTable convertRowIndexToModel錯誤結果?

int[] selecteds = getTableMember().getSelectedRows(); 
if (selecteds != null && selecteds.length > 0) { 
    for (int row : selecteds) { 
     int rr = getTableMember().convertRowIndexToModel(row); 
      System.out.println(row+":"+rr); 
    } 
} 

我得到這樣的結果:

 
11:240 
12:328 
13:1174 
14:328 
15:1174 

我不明白爲什麼不同的視圖索引映射到相同型號指數?

解決的問題: 我在每行修改後調用fireTableRowsUpdated,所以選中的索引不再正確。

+0

嗯..不應該發生。請檢查它是否特定於JXTable(而不是核心表)。如果是這樣,您已經在JXTable中發現了一個錯誤(您可能會考慮在SwingX問題跟蹤器中報告錯誤)在所有情況下,SSCCE都會提供幫助 – kleopatra

回答

2

確認List中的對象實際上是不同的。特別是,DefaultRowSorter使用的Comparator必須正確實施。請注意,默認依賴於底層對象的toString()方法,但您可以指定自己的實現。

+0

該對象的類由「Thrift」生成,我很確定'id'字段有一個唯一的值來保證toString()將顯示唯一的值。 – secmask

+0

驗證getColumnClass()爲其列返回Thrift.class,而id的類型實現Comparable。 – trashgod

+0

是的,getColumnClass()返回對應的Thrift類字段類型,'id'列是typeof'String'。 – secmask