我有一个使用 JavaFX 和 FXML 制作的 GUI。
这个 GUI 有很多组件,并不是所有的组件都需要在某一时刻。
例如,假设一个 GUI 从其服务器部分接收城市列表。每个城市都在其自己的选项卡上进行了描述(并用许多节点进行了描述)。城市集包含 30 个元素。
当 GUI 启动时,它会向服务器询问城市列表。服务器返回城市的随机“子集”(因此,它可以是莫斯科 + 里加 + 纽约或圣彼得堡 + 东京,或仅阿姆斯特丹,或一组中的所有 30 个城市)。
所以。我不需要在我的节点树中拥有所有 30 个选项卡(我想它们只会“吃掉”内存,仅此而已)。
我想管理我在 GUI 上每个时刻拥有的选项卡数量。
我的第一个简单解决方案如下:
- 创建一个 FXML 文件,其中包含所有城市的组件
- 在控制器类的初始化过程中,删除不需要的选项卡。
我有这个解决方案的问题。首先,我不知道是否tabPane.getTabs().remove(index)
真的从节点树中删除了选项卡及其所有内容。其次,所有不需要的选项卡将在它们被删除之前被初始化,因此它们无论如何都会使用内存和资源,而且我的 GUI 可能比它必须的要慢。
我的第二个解决方案是:
- 制作很多 FXML。一个用于所有城市,一个用于每个城市,一个用于每个城市组合。
但是会有很多 FXML 的方法,所以这个解决方案也没有用。
我梦寐以求的解决方案:
- 为每个城市创建一个 FXML 文件,并为带有选项卡的主应用程序创建一个文件。
- 需要时将 FXML 城市文件内容动态加载到选项卡中。
所以,如果有人对此任务有任何想法,或者知道解决方案,请帮助我......