Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaFX中增加滚动窗格的滚动?_Java_User Interface_Javafx_Scrollpane - Fatal编程技术网

如何在JavaFX中增加滚动窗格的滚动?

如何在JavaFX中增加滚动窗格的滚动?,java,user-interface,javafx,scrollpane,Java,User Interface,Javafx,Scrollpane,我正在JavaFX应用程序上使用ScrollPane。滚动窗格将TilePane作为其内容,显示数千个平铺。皱眉太慢了。如何增加滚动窗格的滚动?谢谢。更新-推荐方法-使用ControlsFX GridView 第三方JavaFX控件项目看起来有一个适合您需求的控件。ControlsFX为控件命名。这是本答案中解决方案中建议的虚拟化控件,但它是预构建的,因此您不必实现自己的控件或大量定制ListView来获得此行为 下面是GridView的描述(来自它的Javadoc): GridView是一个虚

我正在JavaFX应用程序上使用ScrollPane。滚动窗格将TilePane作为其内容,显示数千个平铺。皱眉太慢了。如何增加滚动窗格的滚动?谢谢。

更新-推荐方法-使用ControlsFX GridView

第三方JavaFX控件项目看起来有一个适合您需求的控件。ControlsFX为控件命名。这是本答案中解决方案中建议的虚拟化控件,但它是预构建的,因此您不必实现自己的控件或大量定制ListView来获得此行为

下面是GridView的描述(来自它的Javadoc):

GridView是一个虚拟化控件,用于在 可视化、可滚动、网格化的时尚。换句话说,鉴于 ListView显示每行一个ListCell,在GridView中为零 一行上有一个或多个GridCell实例。这种方法意味着 实例化的GridCell实例的数量将是一个显著的数字 小于GridView项目列表中的项目数,如下所示 仅为图形的可见区域创建足够的网格单元 GridView。这有助于提高性能和减少内存 消费

因为每个GridCell都是从Cell扩展而来,所以Cell的方法是相同的 其他UI控件中采用的工厂也会采用 GridView。这有两个主要好处:

  • GridCell是按需创建的,没有用户参与
  • 网格单元可以是任意复杂的。一个简单的网格单元可能只有 它的文本属性集,而更复杂的GridCell可以具有 在其图形属性内设置任意复杂的场景图形(如图所示) 接受任何节点)
  • 过时答案

    而不是使用A作为内容,考虑使用A,它是一个虚拟化组件(例如,它只创建和呈现屏幕上可见的节点,而不是所有可能的节点)。只要您正确地实现了这一点,它可能会比具有数千个节点的单个大型TilePane更高效。如果ListView不太适合您,您可以利用ListViewSkin中的概念(您可以),为您的应用程序创建您自己的类似虚拟化布局(但不要期望这样做特别容易)

    如何更改ListView的方向

    但也许你的问题不是关于方向(我现在有点不清楚你到底在问什么)

    也许您要做的是创建一个普通的、垂直方向的自定义行对象列表视图,其中每一行都由一个HBox或单行TilePane组成。基本上,你需要做更多的工作来获得你想要的性能,你不会找到一个开箱即用的控件来完成你想要的并且表现良好


    不幸的是,提供完整的示例代码以完全解决您的问题超出了StackOverflow答案的合理范围。

    谢谢@jewelsea。但是如何改变ListView的方向,有点像TilePane中的方向,其中Tile或节点是从左到右,从上到下放置的?listView.setOrientation(..)中的可用选项为Orientation.VERTICAL和Orientation.Horizontal。能否提供一个GridView接受特定节点或窗格的示例,GridView正在接受颜色列表。但是,当我尝试创建窗格或节点列表并在GridView的构造函数中传递该列表时,GridView并没有显示窗格或节点,而是显示它们的类名。我怀疑这个问题与GridCell和cellFactory有关,但我不知道如何定制它们。请帮帮我,我想好了。这是一个很大的帮助。