2012-05-01 16 views
1

JTableDefaultTableModelを組み合わせて作成しようとしています。私の問題は、私がそれを並べ替えるためにクリックしているとき(価格と行)、それは間違って並べ替えます。 JTableがintを望ましくない順序でソートする

は、我々が行を持っていると言う:私が欲しいもの

2 
6 
3 
112 
42 
1 

1 
2 
3 
6 
42 
112 

私は何を得る:

1 
112 
2 
3 
42 
6 

任意の提案やソリューション?

+1

[sscce](http://www.sscce.org)を含めてください。 – user1329572

+3

その列のクラスを整数として設定する必要があります。 tableModelをオーバーライドします。今はおそらくオブジェクトの比較/文字列の比較に基づいてソートしています。 – EricR

+0

はい、EricRが言っていることは正しいです。さらに説明すると、文字、数字、句読点などの各文字には、Unicode番号が割り当てられています。例えば、コンピュータは '' A ''を表示せず、' 65 'と表示します。コンピュータは数値自体の代わりにこれでソートしています。例えば、「1」のUnicode番号は「49」です。それで、最小のものが「49」で、それを最上位に置きます。次に、それは '49 49 50'を見て、それを次に置きます。次は「50」、次に「50 49」、次いで「51」、次いで「52 50」である。アルファベット順のようにソートされています:最初の文字を最初に、次にネクタイがある場合は次の順に並べ替えます。 – wchargin

答えて

7

私のプロジェクトのコードベースの例です。これはあなたのTableModelに属します

@Override 
    public Class<?> getColumnClass(int col) { 
      switch (col) { 
       case 0: 
        return Integer.class; 
       case 1: 
        return String.class; 
       case 2: 
        return String.class; 
       case 3: 
        return Integer.class; 
      } 
    } 
+3

これはTableModelに属している必要があります – keuleJ

関連する問題