2011-10-29 7 views
0

JTableにデータを表示する際にいくつか問題があります。私のアプリはJTableとカスタムAbstractTableModelを使用しています。私AbstractTableModelに、私はプライベートフィールドSomeClass[] arrayを持っており、そのクラスのようなものされています。また、私AbstractTableModelにして私はgetValueAtメソッドをオーバーライドJTable display char []

public char[] field1; 
public char[] field2; 
etc. 

を持っており、それがこのようなものが含まれます。私が行うと

... 
switch(column){ 
case(0): 
retrun array[row].field1; 
case(1): 
return array[row].field2; 
} 
etc. 

System.out.println(array[row].field1)データは正しく表示されますが、私のjTableでは "[C @ 203 .........]"のようなものです。

何が問題ですか? :-sこれをどのように修正できますか?誰でも助けてくれますか?

答えて

3

JTableのデフォルトレンダラーは、getValueAt(...)メソッドから返されるObjectに対してtoString()メソッドを呼び出すだけです。

field1はchar配列です。配列のtoString()表現は、あなたが見ているワイドテキストです。

セルのデータを表すためにモデルに文字配列を格納しないでください。代わりに、実際のStringを作成してモデルに格納します。

+0

私は大きなデータセット(約100k)で作業しており、メモリスペースが必要です。だから私はStringの代わりにchar []を選んだのです。 jTableにchar []を表示する方法はありませんか? :-s –

+0

はい、できますが、これを行うには独自のセルレンダラーを作成する必要があります。あまりにも難しいことではありません。 –

+0

セルレンダラーを作成すると、キーを押したときにテーブルを更新する「クイック検索」ボックスを実装するのが難しくなりますか? :-s Again ...私はメモリ空間について話しています.... –