我在JavaFX应用程序上使用ScrollPane。 Scrollpane以TilePane为内容,展示了数千个图块。骂人太慢了。如何增加ScrollPane的滚动?感谢。
答案 0 :(得分:2)
更新 - 推荐方法 - 使用ControlsFX GridView
ControlsFX,第三方JavaFX控件项目看起来像是有一个符合您要求的控件。 ControlsFX命名控件GridView
。它是本答案中解决方案中推荐的虚拟化控件,但它是预先构建的,因此您无需实现自己的控件或大量自定义ListView即可获得此行为。
以下是GridView的描述(来自它的Javadoc):
GridView是一个虚拟化控件,用于在a中显示getItems() 视觉,可滚动,网格状的时尚。换句话说,而a ListView每行显示一个ListCell,在GridView中会有零 或者单行上的更多GridCell实例。这种方法意味着 实例化的GridCell实例数量将是显着的 数字小于GridView项目列表中的项目数量 只有足够的GridCells为可见区域创建 网格视图。这有助于提高性能并减少内存 消耗。
因为每个GridCell都从Cell扩展,所以单元格的方法相同 也采用了其他UI控件中的工厂 网格视图。这有两个主要好处:
- GridCells是按需创建的,无需用户参与,
- GridCells可以是任意复杂的。一个简单的GridCell可能只有 它的文本属性集,而更复杂的GridCell可以有 在其图形属性中设置任意复杂的场景图(因为它 接受任何节点。
醇>
过时的答案
不要使用TilePane作为您的内容,而是考虑使用ListView,这是一个虚拟化组件(例如,它只会创建并呈现屏幕上可见的节点,而不是所有可能的节点节点)。只要您正确实现此功能,它可能比具有数千个节点的单个大型TilePane更有效。如果ListView不适合你,你可以利用ListViewSkin中的概念(你可以check out it's application source),为你的应用程序创建你自己的类似虚拟化布局(不要指望它特别容易尽管如此)。
如何更改ListView的方向?
list.setOrientation(Orientation.HORIZONTAL)
但也许你的问题不是关于方向(我现在有点不清楚你真正在问什么)。
也许您想要做的是创建一个垂直定向的自定义Row对象ListView,其中每一行都包含一个HBox或一行TilePane。基本上,你需要做更多的工作来获得你想要的性能,你将找不到一个开箱即用的控件,它可以完全按照你想要的效果运行。
不幸的是,提供完整的示例代码来完全解决您的问题超出了StackOverflow答案的合理范围。