我在我的JavaFX應用程序上使用ScrollPane。 Scrollpane具有TilePane作爲其內容,顯示數千個圖塊。結果太慢了。如何增加ScrollPane的滾動?謝謝。如何增加JavaFX中ScrollPane的滾動?
回答
更新 - 推薦的方法 - 使用ControlsFX GridView控件
的ControlsFX,第三方的JavaFX控制項目看起來有哪些符合個人需求的控制。 ControlsFX命名控件GridView
。它是一個虛擬化控件,正如本答案的解決方案中所建議的那樣,但它是預先構建的,因此您不必實現自己的控件或高度自定義ListView即可獲得此行爲。
這裏是在GridView的描述(從它的Javadoc):
一個GridView是用於在視覺 ,可滾動的,柵格狀方式顯示getItems()虛擬化控制。換句話說,雖然ListView每行顯示一個ListCell,但在GridView中,單行上將有零個或多個GridCell實例。這種方法意味着實例化的GridCell實例的數量將比GridView項目列表中項目的數量小 ,因爲 僅爲 GridView的可見區域創建了足夠的GridCells。這有助於提高性能並減少內存消耗。
因爲每個GridCell都從Cell延伸,所以在其他UI控件中採用的工廠的相同方法也會在 GridView中採用。這有兩個主要優點:
- 柵格單元的需求,且無需用戶參與創建,
- 柵格單元可以任意複雜。一個簡單的GridCell可能只有其 的文本屬性集,而更復雜的GridCell可以在其圖形屬性中設置任意複雜的場景圖集(因爲它接受任何節點) 。
過時回答
而不是使用TilePane爲您的內容,可以考慮使用ListView,這是一個虛擬化的組件(例如,它只是建立並呈現其在屏幕上看到的節點,而不是所有可能的節點)。只要你正確地實現了這一點,它可能會比一個具有數千個節點的大型TilePane更有效率。如果ListView不太適合你,你可以利用ListViewSkin中的概念(你可以check out it's application source)爲你的應用程序創建你自己的類似的虛擬化佈局(不要指望它特別容易實現) 。
如何改變ListView的方向?
list.setOrientation(Orientation.HORIZONTAL)
但是,也許你的問題不是方向(我現在有點不清楚你實際上是在問)。
也許你想要做的是創建一個正常的,垂直定向的自定義Row對象的ListView,其中每行將包含一個HBox或單行TilePane。基本上,你需要做更多的工作來獲得你想要的表現,你不會找到一個開箱即用的控制,它將完成你想要的,並且表現良好。
不幸的是,提供完整的示例代碼來完全解決您的問題超出了StackOverflow答案的合理範圍。
- 1. Javafx禁用ScrollPane中的滾輪滾動
- 2. JavaFX ScrollPane - 如何使用一個滾動條滾動2 ScrollPanes?
- 3. JavaFX的縮放,滾動的ScrollPane
- 4. 如何在JavaFX中禁用ScrollPane中的滾動?
- 5. ScrollPane JavaFX讓它滾動更多?
- 6. JavaFX 2.1更改ScrollPane滾動條大小
- 7. 如何讓JavaFX ScrollPane自動滾動到底部?
- 8. JavaFX 2.2 - 如何適應在scrollPane內縮放後的滾動?
- 9. JavaFX - 以正確的滾動方向向ScrollPane添加節點
- 10. 如何即時滾動libgdx中的ScrollPane?
- 11. JavaFX 2 WebView:如何增強滾動條
- 12. 如何增加窗格大小並在javafx中滾動?
- 13. 將JList添加到JavaFX ScrollPane
- 14. libgdx ScrollPane - 不滾動?
- 15. JavaFX ScrollPane樣式
- 16. JavaFx 8 ScrollPane removeListener
- 17. 如何在ScrollPane大小調整時使滾動條顯示? (在JavaFX中)
- 18. JavaFX - 以編程方式滾動ScrollPane的約束條件
- 19. JavaFX ScrollPane更新視窗滾動上的邊框
- 20. 如何在JavaFX中設置滾動窗格的單位增量?
- 21. JavaFX:將孩子添加到ScrollPane中
- 22. JavaFX8禁用ScrollPane的滾動
- 23. JAVAFX 2.0如何動態更改scrollPane中的內容?
- 24. JavaFX的加載新FXML文件到ScrollPane
- 25. ListView或ScrollPane滾動條不滾動
- 26. LibGDX物理滾動條ScrollPane
- 27. JavaFX的:獲取的ScrollPane
- 28. Java:如何在ScrollPane視口上繪製非滾動疊加層?
- 29. 如何阻止ScrollPane面板JavaFX
- 30. Android上的JavaFX ScrollPane - 太慢
謝謝@jewelsea。但是如何改變ListView的方向,有點像TilePane中的方向,其中瓷磚或節點是從左到右和從上到下放置的? listView.setOrientation(..)中的可用選項是Orientation.VERTICAL和Orientation.Horizontal。 – 2014-10-02 04:56:48
您能否提供一個接受特定節點或窗格的GridView示例? [在教程](http://controlsfx.bitbucket.org/org/controlsfx/control/GridView.html)中,GridView正在接受Color列表。但是當我嘗試製作一個Pane或Node的列表並在GridView的構造函數中傳遞列表時,GridView不顯示窗格或節點,而是顯示它們的類名。我懷疑這個問題與GridCell和cellFactory有關,但我不知道如何定製它們。請幫忙。 – 2014-10-06 08:21:01
我明白了。 [本教程](http://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/Cell.html?is-external=true)非常有幫助。 – 2014-10-06 10:11:05