2011-10-29 109 views
0

我在JTable中顯示數據時遇到一些問題。我的應用程序使用JTable和自定義的AbstractTableModel。在我AbstractTableModel上我有一個私人領域SomeClass[] array和類是一樣的東西:JTable顯示字符[]

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

也是我AbstractTableModel上我有覆蓋getValueAt方法,它包含了這樣的事情:

... 
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()表示形式就是您看到的奇怪文本。

您不應該在模型中存儲char數組來表示單元格的數據。相反,在模型中創建並存儲實際的字符串。

+0

我正在處理大數據集(大約100k),我需要一些內存空間。這就是爲什麼我選擇了char []而不是String。沒有任何方式顯示jTable中的char []? :-s –

+0

是的,您可以,但您必須創建自己的單元格渲染器才能執行此操作。雖然不是太難。 –

+0

如果我創建了一個單元格渲染器,那麼實現一個「快速搜索」框會很難實現,這個框會在按下某個鍵時更新表格? :-s再次......我在談論內存空間...... –