我在我的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