我正在寻找创建一个 ListView 来填充来自指定目录的许多图像。这一切都很好,但令人讨厌的是,我似乎找不到让 ListView 换行或显示在多列中的方法(目前每行只有一个图像,考虑到没有文本,这很烦人。)
使用 Swing 的 JList,这可以通过 来完成jList.setLayoutOrientation(JList.HORIZONTAL_WRAP);
,但我在 JavaFX 2 中看不到等效项 - 我错过了什么吗?
由于我遇到了完全相同的问题,因此我也朝这个方向进行了调查。如果您只有很少的项目,TilePane 可能是一个解决方案,但如果您有很多项目,它会变得非常慢并消耗大量资源。(按照设计,TilePane 不支持 UI 虚拟化。也就是说,重用/回收不再在视口中的项目节点。)
因此,我的想法是继承 ListView 并创建一个 WrappedListView,但我偶然发现了一个完美的解决方案:ControlsFX 是 JavaFX 控件的开源集合,它恰好有一个支持虚拟化的 GridView 控件。
ControlsFX GridView
这是 ControlsFX 中所有控件的概述。 http://fxexperience.com/controlsfx/features/
对于下载库,他们在其开发站点中提供了标准方式,例如 Maven Dependency:https ://bitbucket.org/controlsfx/controlsfx/
javafx.scene.control.ListView
不支持这样的功能。
鉴于您只是将图像放入其中,您可能只想TilePane
用来显示它们。