当前位置: 首页 > 知识库问答 >
问题:

将参数从控制器传递到FXML文件

杜嘉慕
2023-03-14
 Hello I'm new to javaFX, and trying to create a simulation application of the scheduling algorithms.

我做了逻辑包,但是UI仍然有问题。我想做的是允许用户输入作业数量,在下一个窗口中,我想显示文本字段,他可以在其中输入每个作业的执行时间,换句话说,我应该显示文本字段n time,作为用户给定的作业数量。

这是我为第一个界面所做的:

    <?xml version="1.0" encoding="UTF-8"?>
<GridPane xmlns:fx="http://javafx.com/fxml/1" alignment="center" hgap="10" styleClass="mainFxmlClass" vgap="10" fx:controller="ui.FXMLController">
<padding><Insets bottom="10" left="25" right="25" top="25" /></padding>
 <stylesheets>
    <URL value="@fxml.css" />
  </stylesheets>
   <children>
   <Text id="welcome-text" text="Welcome" GridPane.columnIndex="0" GridPane.columnSpan="2" GridPane.rowIndex="0" />
       <Label text="Le nombre de Processus:" GridPane.columnIndex="0" GridPane.rowIndex="1" />
       <TextField fx:id="textField"  GridPane.columnIndex="1" GridPane.rowIndex="1" />
       <Label text="Choisissez un Algorithm d'Ordonancement :" GridPane.columnIndex="0" GridPane.rowIndex="2" />
       <HBox alignment="bottom_right" spacing="10" GridPane.columnIndex="1" GridPane.rowIndex="5" />
       <Text fx:id="actiontarget" GridPane.columnIndex="1" GridPane.rowIndex="7" />
        <Button onAction="#handleButtonAction" text="Next" GridPane.columnIndex="1" GridPane.rowIndex="4" />
      <MenuButton mnemonicParsing="false" prefHeight="25.0" prefWidth="150.0" text="Algo ... " GridPane.columnIndex="1" GridPane.rowIndex="2">
        <items>
          <MenuItem mnemonicParsing="true" text="Fifo" onAction="#handleButtonAction" />
          <MenuItem mnemonicParsing="false" text="Tourniquet" />
          <MenuItem mnemonicParsing="false" text="PCTER" />
          <MenuItem mnemonicParsing="false" text="PCTE" />
        </items>
      </MenuButton>
   </children>    
</GridPane>

这是我的控制器:

public class FXMLController implements Initializable {

    @FXML
    private Label label;
    @FXML
    private Button button;
    @FXML
    private TextField textField;

    @FXML
    private Integer i; 

    @FXML
    public void handleButtonAction() throws IOException{

        String t = textField.getText();
        IntegerStringConverter a = new IntegerStringConverter();
        this.i = a.fromString(t);

        Parent window = FXMLLoader.load(getClass().getResource("FXML1.fxml"));
        Scene secondScene = new Scene(window);

        Stage stage = new Stage();

        stage.setScene(secondScene);
        stage.show();

        stage.show();
    }
}

我不知道是否有方法将参数从控制器传递到FXML文件,并在FXML中执行循环。。请帮忙

共有2个答案

叶智
2023-03-14

AFAIK,你不能这样做。你必须逆转控制流程:控制器应该在循环中创建必要的控件(标签、文本字段等),可能使用不同的FXML,它只是定义了该部分。

邵耀
2023-03-14

如果我理解正确,您希望请求用户输入并根据输入在GUI中创建节点。

您不能在fxml文件中分别创建循环控制结构,但您可以通过以下方式动态添加和删除节点(即TextFields)

定义垂直框/水平框,

<VBox id="HBox" fx:id="myVBox" ...>

以整数形式获取输入,

int sum = Integer.parseInt(textField.getText());

并在for循环中添加节点,

for(int i=0, i<sum, i++) {
     myVBox.getChildren().add(new TextField("executing time"));
}

并更新视图。

希望有帮助。

 类似资料:
  • 我无法完成的任务是将参数从一个场景传递到另一个场景并返回。 或者换句话说:主控制器加载子控制器的fxml,将对象传递给子控制器,切换场景。不得有两扇开着的窗户。工作完成后,副控制器将场景切换回主控制器,并将一些对象传递回主控制器。这就是我失败的地方。 这个问题和这个问题很相似但仍然没有答案。传递参数JavaFX FXML在注释中也提到了: 有没有人知道如何在没有外部库的情况下实现这一点?

  • 问题内容: 我有一个登录屏幕,我想将登录ID从LoginController传递到MainController,因此我可以访问一些功能来更改密码和其他功能。 我这样加载控制器: Main.fxml绑定到MainController.java。有没有一种方法可以传递所需的用户ID,并在控制器的initialize()方法上对其进行访问? 问题答案: 用FXMLLoader加载控制器后,可以在调用sh

  • 问题内容: 我有多个调用同一控制器的路由,我想将不同的变量传递给它。 我知道我可以使用“解决”对象: 传递值作为依赖项: 这种方法的问题是,如果其他路线上缺少resolve对象,则我的应用程序崩溃,并且我想传递可选的参数。 有什么方法可以(从路由提供者)将特定的参数传递给Controller? 谢谢 问题答案: 路由: 访问:在控制器中注入$ route,然后使用它

  • 我这样加载控制器: fxml绑定到MainController.java。有没有一种方法可以传递我需要的用户ID,并在控制器的initialize()方法上访问它?

  • 我是JavaFx新手,因此我找不到解决问题的方法 假设我有以下应用程序结构: 在SecondController中显示文本的最佳/最佳方式是什么,从FirstController传递文本。我的意思是,我在中输入一个文本,然后按下按钮,按下按钮后,我希望文本显示在使用另一个控制器的中。我已经阅读了很多关于和可以用来解决这个问题的知识,但不幸的是,我无法实现一个有效的解决方案。 如果你们专家能在这方面

  • 问题内容: 我的图像是我试图将数据(变量)从一个阶段传递到另一阶段,但是当我尝试在第二阶段访问它们时,它们为空。mainWindow的代码。前往window1 // window1类: 如果我想访问以前收到的标题,则为null 初始化显示应该为“ Window1”时显示为null} 问题答案: 在加载FXML文件的过程中,将调用该方法-换句话说,在调用时将调用该方法。 显然,这是 在 调用 之前