2009-10-28 3 views
2

"고급"테이블/스프레드 시트 SWT 위젯 (Nattable, Nebula Grid)이 있지만 실제로는 큰 데이터 세트를 지원하지 않습니다. Nattable은 가장 가까운 테이블이지만, 사용하는 데이터 유형에는 여전히 제한이있어 테이블의 행 수가 제한적으로됩니다.고급 SWT 테이블 위젯

나는 을 적어도 2^32 행, 바람직하게는 2^64로 나타낼 수 있어야합니다.

+1

오른쪽 마음에 어떤 사용자가 2^32를보고 싶어합니까? 나는 당신이 당신의 요구 사항을 개정 할 것을 제안한다. – andyczerwonka

+2

아무도 ** ** 2^32 행을 보지 않고 있습니다. ** 해결 ** 문제입니다. 내가 가진 모델은 32 비트 메모리 공간입니다. 행 개수를 2^32로 설정할 수 없다면 필자가 피하고 싶은 자신의 페이징 체계를 구현해야 할 것입니다. – JesperE

답변

3

reguar 테이블이있는 SWT.VIRTUAL의 문제점은 무엇입니까? 그런 다음보기에 필요한 것을로드하기위한 콜백을 제공하는 LazyContentProvider,을 사용할 수 있습니다. 이 같은

뭔가 ...

TableViewertableViewer = new TableViewer(parent, SWT.VIRTUAL|SWT.BORDER|SWT.V_SCROLL); 
// skipping the noise 
tableViewer.setItemCount(100000); 
tableViewer.setContentProvider(new LazyContentProvider()); 
tableViewer.setLabelProvider(new TableLabelProvider()); 
tableViewer.setUseHashlookup(true); 
tableViewer.setInput(null); 
+1

setItemCount (Integer.MAX_VALUE)를 사용해보십시오. SWT 테이블 위젯에는 모든 항목에 대한 백업 배열이 있습니다. 그것에 관한 유일한 "가상"은 필요할 때까지 실제 ** 값 **을 가져 오지 않는다는 것입니다. 검색이 비싸지 만 2 백만 행을 초과하여 확장되지 않는 경우이 방법이 유용합니다. – JesperE

+0

정확하게 2^32 행이 필요한 경우 SWT.VIRTUAL 스타일의 테이블을 Integer.MAX_VALUE 항목과 함께 사용하고, 예를 들어 항목 500 (2^31 밖)을 표시해야 할 경우 항목 번호를 인쇄합니다. 1000 (2^32)입니다. –

+1

아쉽게도 setItemCount (Integer.MAX_VALUE)는 OutOfMemory 오류를 발생시킵니다. 테이블 컨트롤이 그 크기의 배열을 생성하려고하기 때문에 추측 할 수 있습니다. – JesperE

6

SWT Matrix 휴식 행이나 열의 BigInteger의 양을 허용 용량 bariers. 폐쇄 형 소스이지만 개인용 및 비상업적 용도로는 무료입니다. 이 시점에서 초기 알파가 출시됩니다.

+0

SWT 매트릭스는 실제로 유망한 것으로 보입니다. 고마워, 나는 그것을 시도 할 것이다. – JesperE

+0

시도 후에 노출을 확인해 주시면 감사하겠습니다. 문서에서 누락되거나 발견 된 중요한 기능은 무엇입니까? –

+0

할 것입니다. 나는 그걸 할 여유 시간을 찾아야 할 것이다. :) – JesperE