簡體   English   中英

JAVAFX Scene Builder多個控制器

[英]JAVAFX Scene builder multiple controllers

我用多個問題折磨了谷歌,但仍然沒能獲得一點。

我想用SceneBuilder填充的2個FXML場景來構建應用程序。 每個都有自己的控制器。 我使用ControlledScreen交換場景,這可行。 但是后來我無法改變任何場景。 例如:我在場景控制器中有標簽:

    public class ControllerForm implements ControlledScreen, Initializable {

    ScreensController myController;
        GraphicsContext GC;

         @FXML
            private Label fitnessLabel;

public void updateFitnessLabel(double data) {
                fitnessLabel.setText(String.valueOf(data));
            }

public void initialize(URL location, ResourceBundle resources) {
            this.GC = neuroCanvas.getGraphicsContext2D();
               }

在FXML文件中將其定義為:

<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="684.0" prefWidth="918.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="general.ControllerForm">
   <left>
      <VBox prefHeight="400.0" prefWidth="189.0" BorderPane.alignment="CENTER">
         <children>
    <Label fx:id="fitnessLabel" text="Label">
                   <graphic>
                      <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Fitness:" />
                   </graphic>
                </Label>

更新標簽的功能是updateFitnessLabel。

在初始化方法中,我使用GC cuz,在此場景上有畫布,想在其上繪制。

我有要求此功能的方法為:

public class Net {
private ControllerForm controller;

    public void drawStart() throws IOException {
     FXMLLoader loader = new FXMLLoader(
                        getClass().getResource(
                                Main.ScreenFile
                        )
                );

                BorderPane cv =  loader.load();
                // load actual screen
                ControllerForm controller =
                        loader.<ControllerForm>getController();

                controller.updateFitnessLabel(12);}

但是沒有效果。 標簽不會被更新。

我想念什么?

我嘗試使用時間軸,但仍然沒有效果。 如何在這個場景上實際畫些東西?

好的,我找到了解決方案。

loader.load返回Object。 但是我需要初始對象而不是新對象。 使用此答案-FXMLLoader getController返回NULL嗎?

這不是最佳選擇,但是我不知道如何獲得初始對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM