从另一个场景打开一个新场景(有自己的控制器)(有自己的控制器)

时间:2014-01-08 03:42:27

标签: javafx javafx-2 fxml

我是JavaFX的新手并且仍然在学习我遇到了这个问题并且找不到答案。

我有两个名为“one.fxml”和“two.fxml”的FXML文件,它们有自己的控制器类,命名为“OneController.java”和“TwoController.java”

我想用“one.fxml”打开onButtonClick的“two.fxml”。

“one.fxml”中的按钮代码为:

<Button fx:id="clearButton" layoutX="690.0" layoutY="309.0" minHeight="18.0" mnemonicParsing="false" prefHeight="40.0" prefWidth="196.0" text="Clear" onAction="#buttonclearClick"/>

我在“OneController.java”中有这个方法

private void buttonclearClick(final ActionEvent event)
{
  //code to be written?
}

如何将某些字段的值从“one.fxml”传输到“two.fxml”

像:

如果“one.fxml”也有此标记:

<Text fx:id="textLabel" fill="#001f4b" layoutX="14.0" layoutY="377.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Powered by StackOverflow">

如何将此文本字段值(text =“Powered by StackOverflow”)传输到“two.fxml”或TwoController.java

如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

一个控制器

            private void buttonclearClick(final ActionEvent event)
            {
              try
              {

                FXMLLoader loader = new FXMLLoader(getClass().getResource("two.fxml"));
                Stage stage = new Stage();
                stage.initModality(Modality.APPLICATION_MODAL);
                //stage.initOwner(MainStage.stage);
                stage.setScene(new Scene((Pane)loader.load()));
                TwoController tsc = loader.<TwoController>getController();
                tsc.GettextVal(textLabel.getText()); // Function in TwoController
                stage.show();

              }
              catch(Exception e)
              {
                  e.printStackTrace();
              }
            }

两个控制器

在两个控制器中创建一个GettextVal函数

          @FXML
          void initialize() 
          {
             //Initialize code here
          }

          public void GettextVal(String txtval)
          {
             System.out.println("text value from one controller - "+txtval);
          }