2013-08-30 103 views
3

這是我的問題,我有一個表有50列和10000行,所有的數據都是字符串。在Swing中,當我有一個TableCellRenderer呈現整個表的字符串時。JavaFX TableCell vs Swing TableCellRenderer實例

在JavaFx呈現相同的表我有50000 TableCell對象創建。

我在這裏錯過了什麼嗎?這永遠不會有任何表現,分配50K的對象是不可接受的。

在JavaFx中有沒有一種方法可以使用一個TableCell渲染我所有的單元格並且具有與Swing類似的行爲?

回答

5

從Javadoc中Cell類:

因爲樹視圖,ListView中,TableView中和其它這樣的控制可以潛在地用於顯示令人難以置信的大量數據,這是不可行的創建一個實際的細胞爲控制中的每一件物品。我們代表極其龐大的數據集,僅使用極少數的單元格。每個單元都被「回收」或重複使用。這就是我們說這些控件是虛擬化的意思。

基本上,TableView將只創建儘可能多的單元實例,因爲它需要在屏幕上呈現內容。如果您滾動表格,單元格會被回收。基本上,這應該給你與Swing相同的性能,交易一個簡單的編程模型的小內存開銷。

+0

非常感謝,非常感謝。我其實感到很傻。我閱讀了單元上的JavaDoc,但這個關鍵點直到你發佈它纔打我!謝謝。 –