从控制器传递参数到XML文件

时间:2014-11-11 11:46:26

标签: java javafx-2 fxml

 Hello I'm new to javaFX, and trying to create a simulation application of the scheduling algorithms.

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

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

    <?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 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果我理解正确,您需要根据输入请求用户输入并在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"));
}

并更新视图。

希望它有所帮助。