我在JavaFX应用程序上使用ScrollPane。Scrollpane以TilePane作为其内容,显示了数千个瓷砖。敲击太慢了。如何增加滚动窗格的滚动?谢了。
更新-推荐的方法-使用ControlsFX GridView
ControlsFX,第三方JavaFX控件项目看起来有一个符合您需求的控件。ControlsFX将控件命名为GridView
。正如本答案中的解决方案所建议的那样,它是一个虚拟化控件,但它是预先构建的,因此您不必实现自己的控件或大量自定义ListView来获得此行为。
以下是GridView的描述(来自Javadoc):
GridView是一个虚拟控件,用于以可视化、可滚动、类似网格的方式显示getItems()。换句话说,虽然ListView每行显示一个ListCell,但在GridView中,单行上将有零个或多个GridCell实例。这种方法意味着实例化的GridCell实例的数量将明显少于GridView项列表中的项的数量,因为只为GridView的可见区域创建了足够的GridCell。这有助于提高性能并减少内存消耗。
因为每个GridCell都是从Cell扩展而来,所以在GridView中也采用了与其他UI控件相同的Cell工厂方法。这有两个主要好处:
过时的回答
考虑使用ListView,而不是对您的内容使用TilePane,它是一个虚拟化的组件(例如,它只创建和呈现屏幕上可见的节点,而不是所有可能的节点)。只要您正确地实现这一点,它可能会比一个拥有数千个节点的大型TilePane更高效。如果ListView不太适合您,您可以使用ListViewSkin中的概念(您可以查看它的应用程序源代码),为您的应用程序创建您自己的类似虚拟化布局(但不要期望这特别容易)。
如何更改ListView的方向?
不幸的是,提供完整的示例代码来完全解决您的问题超出了StackOverflow答案的合理范围。
如何在到达特定的时仅禁用向下滚动?
嗨,有没有什么方法可以提高滚动速度。我找到了一些解决方案,但都不适合我。这就是我尝试的: 或者使用css: 还有别的办法吗?编辑:上面的解决方案都不起作用,我试图使用大得离谱的数字,但滚动速度还是一样
我在java项目的JFXPanel中有一个JavaFX ScrollPane。这个项目将在触摸显示器没有键盘,所以我需要模拟一个触摸屏滚动。 问题是;如果我在ScrollPane中拖动鼠标,它工作得很好,但如果我在有按钮的地方拖动鼠标,它就不能滚动(想法是ScrollPane将充满按钮,它们之间没有空格)。
我使用ScrollPane,因为它内置了输入和抛出处理。我有一个滚动轮的图像,分为14个部分,滚动窗格本身是两个部分较短,以便将有一个部分在右侧和左侧,它可以滚动到任何一个方向。一旦滚动位置到达任何一个方向的末端,我想将滚动位置重置回中心。一遍又一遍地这样做应该会产生一个无限滚动轮的幻觉(希望如此)。 我遇到的问题是如何在代码中定位滚动窗格以重置图像,一旦它到达任何一端。到目前为止,我没有尝试设置
我有一个元素,它本身有一个滚动条,还有一个单独的,它有一个滚动条。如何使其中一个滚动条与另一个滚动条的位置匹配? 我一直在查找获取滚动条位置的方法。 因为它们都返回不同的值,所以我必须知道它们的最大位置。
问题内容: 我在ScrollPane中有一个Label。我正在循环中更新标签(在另一个线程中)。如果用户未将ScrollPane保持在某个位置,如何更新ScrollPane使其向下滚动(而不是横向滚动,这将手动完成)?是否有二传手? 问题答案: @数学谢谢,这工作! 我用这部分代码解决了“必须看标签”的问题