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中进行循环..请帮助
答案 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"));
}
并更新视图。
希望它有所帮助。