【发布时间】:2013-01-20 18:31:35
【问题描述】:
我被 javafx 弄湿了。这就是我正在做的。
FXML Views
DI Controllers
Weld-SE Managed Services and Models
Trying to confine UI to FXML
Trying keep the Controllers thin
问题:
在尝试编写 UI 代码时,大多数静态 UI 都被限制在 fxml 中。但是在某些情况下,我会发现自己添加、删除、显示、隐藏元素等。
我发现自己在控制器内部执行此操作,因为 fx 允许我在视图中配置控制器方法,它将调用特定的操作/事件。所有这些代码都处理动态 UI 构建/操作,并且属于视图层。但是,它最终会导致控制器变胖。
javafx 提供 javascript 集成。这是一种抽象视图操作代码的可能方式。但这会在组合中添加不那么完美的javascript。
如何在 java 或 fxml 中抽象出代码,以免破坏瘦控制器范式?
编辑
@assylias
同意,我已经考虑过这种方式,java 类和 fxml 一起成为可重用的小部件。但是,我如何将它连接到 FXML。 FXML 除了控制器什么都不懂。假设我使用 fx:controller 将此视图类连接到 fxml 中,而不是将其命名为控制器。所以我有这样的东西。
这个视图类只有视图操作代码。然后我会创建另一个控制器类。但后来我希望以某种方式将表单数据填充到这个控制器中。这应该只在用户提交表单时发生。所以在某种程度上,我需要以某种方式告诉 javafx UI 操作请求/事件不同于实际的数据操作请求/事件。
您的想法,如果过于冗长,请见谅。我试图用尽可能少的词来表达它。
【问题讨论】:
-
你可以有 FXML 视图,一个 Java 视图(控制器的第一层),它执行动态的东西,然后是一个适当的 Java 控制器,它扩展了第一个。 (不确定这是否可行,只是一个想法)。
-
您似乎尝试应用 MVC 模式,但大多数情况下不需要它。 Java FX 中的控制器不是您已经知道的 MVC 模式的控制器(图中的视图类)。那么你想解决什么问题呢?可以提供样品吗?
-
我希望了解如何更好地组织我的代码并避免代码混乱。我认为其他人一定比我先遇到过这个问题,并且一定找到了解决方法。
-
你能告诉我们你遇到了什么样的代码混乱问题吗?