【发布时间】:2013-05-28 14:32:00
【问题描述】:
我有一个由一个控制器控制的 fxml 文件。我想将控制器分成多个部分,就像放在一个控制器中一样会产生很长的代码。不幸的是,fx:controller 只能放在根目录下。对我如何分离控制器有什么建议吗?
【问题讨论】:
我有一个由一个控制器控制的 fxml 文件。我想将控制器分成多个部分,就像放在一个控制器中一样会产生很长的代码。不幸的是,fx:controller 只能放在根目录下。对我如何分离控制器有什么建议吗?
【问题讨论】:
在加载 FXML 标记期间,仅规定为场景图指定一个控制器。您可以加载其他 FXML 标记文件和嵌套控制器,但我认为这不是您要的。
在我看来,这并不重要。
您可以在任意数量的文件中编写任意数量的类,并让它们与您的控制器类交互,就像任何 Java 类可以与任何其他 Java 类交互一样。
我真的想不出任何特别好的理由说明在加载时为场景图指定多个控制器会很有用。
【讨论】:
我建议创建自定义控件 - 使用几个较小的 FXML 文件而不是一个大 FXML 文件。
教程如下:
http://docs.oracle.com/javafx/2/fxml_get_started/custom_control.htm
【讨论】:
您可以将 fxml 文件作为节点添加到另一个 fxml 中,两者都具有不同的控制器和场景构建器中的包含选项
【讨论】:
通过这种方式,您可以制作同一个 FXML 文件的另一个控制器:
MyClass object= new MyClass();
FXMLLoader root = new FXMLLoader(getClass().getResource("FXMLDocument.fxml"));
root.setController(object);
【讨论】: