我尝试在JavaFX中创建一个带有左侧面板的应用程序,其中包含一些buttoms和一个右侧面板,我加载了不同的面板。两个面板(左/右)都在BorderPane中。 按下每个按钮,在右侧面板中加载fxml。如果我按下其他按钮,面板会更改并加载其他fxml。
基于这个架构,我有两个问题:
如何保存面板状态?
示例:当按btn1时,加载panel1,其中包含例如texfield并写下我的名字。接下来,我按btn2并加载panel2与其他控件。最后,我返回到panel1,但我需要获取面板,而textfield包含我的名字,不是空的文本字段(反之亦然,如果我在panel2中有控件并且有一些东西并从另一个面板更改到该面板)。
如何在面板之间共享信息?
示例:我在panel1中加载了一个用户列表(来自数据库),如果用户更改为panel2,我会在标签中显示所有用户的总和,但我想重复使用相同的列表来计算我不想要执行相同的查询。
我尝试在窗口控制器中使用HashMap(具有窗口结构的关联fxml)。当一个面板加载时,我检查HashMap中是否存在控制器,我创建并实例并保存,下次该用户使用同一个面板时,控制器从hashmap获取并加载与上次相同的状态。这有效,但我有一个问题,如何在其他面板控制器之间交换信息?我知道我可以将hashmap传递给所有控制器,但我更喜欢使用依赖注入。
我不想使用Spring框架,我尝试使用DataFX,但我不知道该怎么做?
答案 0 :(得分:2)
这个问题实际上是其他几个问题的合并:
但是,因为你想要依赖注入,正如James建议的那样,看看afterburner.fx这是JavaFX的轻量级依赖注入框架。使用这样的框架应该有助于通过依赖注入对象来保存和共享面板之间的状态。
我建议您查看上述资源,然后尝试在应用程序上取得更多进展,如果遇到特定问题,请回复(在一个新问题中,代码为mcve,每个问题一个问题)你需要帮助。