我有一个由一个控制器控制的fxml文件。我想将控制器分成多个部分,就像放在一个控制器中制作一个长代码一样。不幸的是,fx:controller只能放在root中。对我有什么建议如何分离控制器?
答案 0 :(得分:8)
我建议创建自定义控件 - 使用几个较小的FXML文件而不是一个大的FXML文件。
以下是教程:
http://docs.oracle.com/javafx/2/fxml_get_started/custom_control.htm
答案 1 :(得分:1)
在加载FXML标记期间,只有为场景图指定一个控制器的规定。您可以加载其他FXML标记文件和嵌套控制器,但我认为这不是您所要求的。
在我看来,无论如何都没关系。
您可以在任意数量的文件中编写任意数量的类,并让它们与您的控制器类交互,就像任何Java类可以与任何其他Java类交互一样。
我真的想不出为什么在加载时为场景图指定多个控制器会有用的任何特别好的理由。
答案 2 :(得分:1)
您可以将一个fxml文件作为节点添加到另一个fxml中,这两个场景都具有不同的控制器,并且在场景构建器中具有include选项
答案 3 :(得分:0)
通过这种方式,您可以使另一个控制器具有相同的FXML文件:
MyClass object= new MyClass();
FXMLLoader root = new FXMLLoader(getClass().getResource("FXMLDocument.fxml"));
root.setController(object);