在那裏有幾個「高級」表格/電子表格SWT小部件(Nattable,Nebula Grid),但它們都不支持真正大的數據集。 Nattable是最接近的一個,但它所使用的數據類型仍然存在限制,導致表中的行數變得很有限。高級SWT表部件
我需要能夠代表至少 2^32行,最好是2^64。
在那裏有幾個「高級」表格/電子表格SWT小部件(Nattable,Nebula Grid),但它們都不支持真正大的數據集。 Nattable是最接近的一個,但它所使用的數據類型仍然存在限制,導致表中的行數變得很有限。高級SWT表部件
我需要能夠代表至少 2^32行,最好是2^64。
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);
嘗試setItemCount(Integer.MAX_VALUE)。 SWT表格窗口小部件有一個所有項目的後備數組。關於它的唯一「虛擬」是實際的**值**在需要之前不會被獲取。如果檢索代價昂貴,這種方法效果很好,但不會超過幾百萬行。 – JesperE 2009-10-29 08:00:07
如果您確切需要2^32行,請使用帶有SWT.VIRTUAL樣式的表格和Integer.MAX_VALUE項目,並且當您必須顯示例如項目500(2^31之外)時,您將打印項目編號。 1000(2^32)。 – 2009-11-03 18:44:13
不幸的是,setItemCount(Integer.MAX_VALUE)會導致出現OutOfMemory錯誤,因爲Table控件試圖創建該大小的數組。 – JesperE 2009-11-04 12:36:26
SWT Matrix斷能力bariers讓行或列的任何BigInteger的量。它是封閉的源代碼,但免費用於私人和非商業用途。雖然在這一點上早期的alpha釋放。
什麼用戶在他們的正確思想想要看到2^32?我建議你修改你的要求。 – andyczerwonka 2009-10-28 22:53:53
沒有人在談論**看到** 2^32行。這一切都是**解決**的問題。我擁有的型號是32位內存空間。如果我不能將行數設置爲2^32,我將不得不實現我自己的分頁方案,這是我希望避免的。 – JesperE 2009-10-29 08:04:19