假设我在我的应用程序中创建了一个自定义控件。此自定义控件可以放在另一个布局的FXML文件中,也可以通过代码动态添加。容纳此自定义窗口小部件的父容器必须能够响应其更改。
我的自定义小部件是否应该使用INTERFACES(多态)或CONTROLLER传递?
前者要求任何父类动态地将它添加到它们的布局中实现WidgetInterface,以便它可以处理更改。
后者允许控制器类在构造期间自行传递,以便窗口小部件可以告诉父控制器根据更改进行操作。这最适用于FXML注射。但是,此方法的问题在于它只允许一个父控制器类控制窗口小部件。
我的小部件如何被任何类,任何地方使用,并且可以轻松地从FXML注入而没有问题?通过注入方法,它将尝试调用initialize()并在可能没有控制器类时依赖它。
答案 0 :(得分:0)
我想说最好的选择是使用控制器,因为正如你所说,它们可以很好地与FXML注入配合使用。
我不知道让一个父控制器类控制窗口小部件是一件坏事,因为一个类可以实现你选择的接口,甚至扩展另一个类,继承它的方法/属性。
另外,如果您将fxml导入场景构建器,甚至可以使用Scene Builder轻松操作窗口小部件。