小编Ant*_*llo的帖子

JavaFx嵌套控制器(FXML <include>)

这个 tutotial中,是一个如何包含自定义组件并使用来自容器控制器的控制器的示例.

main_window_content.fxml

<VBox fx:controller="com.foo.MainController">
   <fx:include fx:id="dialog" source="dialog.fxml"/>
   ...
</VBox>
Run Code Online (Sandbox Code Playgroud)

MainController.java

public class MainController extends Controller {
    @FXML private Window dialog;
    @FXML private DialogController dialogController;

    ..
Run Code Online (Sandbox Code Playgroud)

如果组件只包含一次,它可以正常工作.如果包含两次相同的组件,则不会初始化控制器.两个控制器都为空.

main_window_content.fxml

    <VBox fx:controller="com.foo.MainController">
       <fx:include fx:id="dialog1" source="dialog.fxml"/>
       <fx:include fx:id="dialog2" source="dialog.fxml"/>
       ...
    </VBox>
Run Code Online (Sandbox Code Playgroud)

MainController.java

    public class MainController extends Controller {
        @FXML private Window dialog1;
        @FXML private DialogController dialogController1;
        @FXML private Window dialog2;
        @FXML private DialogController dialogController2;
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决问题吗?谢谢

这是我的FXML加载代码.它在主应用程序中执行:

public void start(Stage stage) throws Exception { 
    Parent root = FXMLLoader.load(getClass().getResource("main_window_content.fxml"));
    stage.setTitle("FXML Welcome"); 
    stage.setScene(new Scene(root, 300, …
Run Code Online (Sandbox Code Playgroud)

controller nested javafx include fxml

27
推荐指数
1
解决办法
3万
查看次数

标签 统计

controller ×1

fxml ×1

include ×1

javafx ×1

nested ×1