2013-08-04 28 views
0

我做了一個jtable,everthing工作正常,所以票價,但仍然有問題排序表中的值。 我的一些代碼:問題setAutoCreateSorter(true)

int nalt = (int) (1 + ((altmax - altmin)/incr)); 
    tabela = new JTable(new Object[nalt][6], colunas); 
    for (int i = 0; i <= (nalt - 1); i = i) { 
     for (double j = altmin; j <= altmax; j = j + incr) { 
      Double tati = new Double(j); 
      tabela.setValueAt(tati, i, 0); 
      i = i + 1; 
     } 
    } 
    tabela.setPreferredScrollableViewportSize(tabela.getPreferredSize()); 
    tabela.setFillsViewportHeight(true); 
    tabela.setAutoCreateRowSorter(true); 
    JScrollPane jps = new JScrollPane(tabela); 
    panel2.add(jps); 

的問題是,當我試圖將列從高到較小的數字我得到這樣的排序:

950 
9000 
850 
80000 
7500 
7 
6000 

如果你能幫助我我將不勝感激

感謝

回答

2

顯示的排序順序似乎是基於String。如here所示,您的(看不見的)TableModel必須返回適合數字排序的合適的Comparable類型,例如, Double.class。示例請參閱tutorial

附錄:我做錯了什麼?

Double.class的最小實現getColumnClass()顯示爲here。啓用自動RowSorter並嘗試查看效果。

table.setAutoCreateRowSorter(true); 
+0

哦,我明白了,但我該怎麼做呢?我嘗試了不同的方式,但我不能那樣做。我看到了很多例子,但它們與我的例子有點不同,因爲我通過table.setValueAt(,,,)將值添加到表中,並且大多數情況下我通過創建數組來添加值,並編輯他們的DefaultTableModel。對不起,我的無知,但我是新來的,只是想學習。 – user2627865

+0

在您的'getColumnClass()'實現中爲該列返回'Double.class'。 – trashgod

+0

我這樣做過:public class table1(){ \t tabela.getColumnClass(0);返回Double.class; \t} \t並且在設置了表的值之後:table1(); \t \t tabela.setAutoCreateRowSorter(true);我做錯了什麼? – user2627865

相關問題