2011-10-29 3 views
0

JTable에서 데이터를 표시하는 데 문제가 있습니다. 내 애플 리케이션 JTable 및 사용자 지정 AbstractTableModel 사용하고 있습니다. 내 AbstractTableModel가 나는 개인 필드 SomeClass[] array이 그 클래스는 뭔가 같다 : 나는 재정 getValueAt 방법을 가지고 내가 AbstractTableModel에서 또한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 ... 기억 공간에 대해 말하고 있습니다 .... –