Java JTable显示字符[]

Java JTable显示字符[],java,swing,jtable,char,Java,Swing,Jtable,Char,我在JTable中显示数据时遇到一些问题。我的应用程序使用JTable和自定义AbstractTable模型。在我的AbstractTableModel中,我有一个私有字段SomeClass[]array,该类类似于: public char[] field1; public char[] field2; etc. 同样在AbstractTableModel中,我有overridegetValueAt方法,它包含如下内容: ... switch(column){ case(0): retrun

我在JTable中显示数据时遇到一些问题。我的应用程序使用JTable和自定义AbstractTable模型。在我的AbstractTableModel中,我有一个私有字段
SomeClass[]array
,该类类似于:

public char[] field1;
public char[] field2;
etc.
同样在AbstractTableModel中,我有override
getValueAt
方法,它包含如下内容:

...
switch(column){
case(0):
retrun array[row].field1;
case(1):
return array[row].field2;
}
etc.
当我执行
System.out.println(数组[row].field1)
时,数据显示正确,但在我的jTable中类似于“[C@203“……”


问题是什么?:-s我如何解决这个问题?有人能帮我吗?

JTable的默认呈现程序只需对从getValueAt(…)方法返回的对象调用toString()方法

field1是一个字符数组。数组的toString()表示形式是您看到的wierd文本


您不应该在模型中存储字符数组来表示单元格的数据。而是在模型中创建并存储一个实际字符串。

JTable的默认呈现程序只需对从getValueAt(…)方法返回的对象调用toString()方法

field1是一个字符数组。数组的toString()表示形式是您看到的wierd文本


您不应该在模型中存储字符数组来表示单元格的数据。而应该在模型中创建并存储一个实际的字符串。

我正在处理大数据集(大约100k),需要一些内存空间。这就是为什么我选择了char[]而不是String。这不是显示字符[]在jTable?:-sYes中可以,但您必须创建自己的单元渲染器来完成此操作。但这并不难。如果我创建单元渲染器,则很难实现“快速搜索”按下键时将更新表的框?:-s再次…我说的是内存空间…@IonutUngureanu:进一步考虑,我建议您不要让表模型保存如此大量的数据。为什么不让它由数据库保存,只在需要显示时提取需要显示的内容。渲染器将在显示数据之前,需要将char[]转换为字符串。我不确定“快速搜索”功能是什么。可能你说的是“过滤”显示包含特定字符的行的模型。默认情况下,JTable支持筛选,但筛选通过使用正则表达式查找匹配数据来工作。由于正则表达式在字符串上工作,我不确定包含字符[]的模型如何工作将起作用。阅读JTable API,并按照Swing教程的链接(关于
如何使用表)进行筛选示例。我正在处理大数据集(大约100k),需要一些内存空间。这就是为什么我选择了char[]而不是String。这不是显示char[]的任何方式在jTable?:-sYes中可以,但您必须创建自己的单元渲染器来完成此操作。但这并不难。如果我创建单元渲染器,则很难实现“快速搜索”按下键时将更新表的框?:-s再次…我说的是内存空间…@IonutUngureanu:进一步考虑,我建议您不要让表模型保存如此大量的数据。为什么不让它由数据库保存,只在需要显示时提取需要显示的内容。渲染器将在显示数据之前,需要将char[]转换为字符串。我不确定“快速搜索”功能是什么。可能你说的是“过滤”显示包含特定字符的行的模型。默认情况下,JTable支持筛选,但筛选通过使用正则表达式查找匹配数据来工作。由于正则表达式在字符串上工作,我不确定包含字符[]的模型如何工作可以。阅读JTable API,并按照Swing教程的链接,了解如何使用表以获得过滤示例。