2011-10-29 69 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再次......我在谈论内存空间...... –