我使用ListView来动态显示JavaFX应用程序中的项目。项目通过REST调用加载到我的后端应用程序。每个项目都可以点击,然后显示产品视图,而不是产品列表。这工作(看起来)罚款,直到应用程序窗口的大小调整。调整大小后,项目看起来很丑,它们占用太多空间。
问题:有没有办法弄到一些流动物品的订单?
在HTML和CSS中,如果我记得很清楚,那就是Flexbox。
所有项目将是相同的宽度和相同的高度,没有给一个机会来计算宽度或高度为每个项目分别。
我在互联网上找到的唯一解决方案是:https://github.com/onexip/FlexBoxFX-但它只使用FXML文件,并且没有动态添加项目的选项。最后一次项目更新是6年前,这告诉我它被遗弃或维护不善。官方网站已经死了:http://flexboxfx.io
编辑:正如James_D
所提到的,我不需要ListView,但需要任何其他可行的解决方案。
我也知道WebView,但我想避免在我的应用程序中的HTML内容。
为了使我的情况更清楚,我做了一些截图,第一个是编辑来代表我想要的想法。已编辑屏幕截图上的数字表示所需的项目顺序。
如果窗口的宽度增加,第一行应该有项目1、2和3,下一行4、5和6,下一行7、8和9,最后一行应该只有一个项目(10)。所有行应居中,最后一行的项目10应位于项目8下方。
这是我想得到的最终布局,但我不知道如何。
一切都很好,当窗口没有调整大小,但调整大小后,它看起来很丑。
1条答案
按热度按时间slsn1g291#
ListView
的主要目的是提供 * 虚拟化 *;即,它提供了一种有效的机制来显示大量的项目,让用户滚动通过它们,而没有用于当前未显示的项目的UI组件的开销。它还提供了一些附加功能,例如选择(允许用户将列表中的一个或多个项目置于视觉上显示的“选定”状态)。如果您实际上需要虚拟化,可能需要选择,并且想要类似网格的布局,那么第三方库ControlsFX提供了类似虚拟化的
GridView
。然而,你的问题似乎只是关于布局,你的屏幕截图似乎显示你使用
Pagination
控件,这将(可能)消除虚拟化的需要。如果您不需要ListView
的功能,那么一个标准的布局窗格,如FlowPane
或TilePane
,可能 Package 在ScrollPane
中,应该提供您需要的布局。