Я уже некоторое время пытаюсь заставить что-то работать, но это не ладит.Я относительно новичок в GUI и пытаюсь сделать это в JavaFX, используя IntelliJ и Gluon SceneBuilder.Вот что я хочу сделать:
Когда я нажимаю Button
в моем исходном окне, появляется всплывающее окно.По сути, это новое окно, если это необычно, пожалуйста, дайте мне знать.В этом всплывающем окне есть три TextField
с, в которые я могу ввести материал.Когда я нажимаю «Подтвердить» Button
во всплывающем окне, всплывающее окно должно закрыться и сообщить контроллеру, который вызвал его, все, что было введено в TextField
s.
Надеюсь, я предоставил достаточноИнформация.Я искал весь день и спросил у некоторых опытных программистов, но безрезультатно.
Прямо сейчас, это относительный код (извините, голландцы):
Базовый контроллер
public class Controller implements Initializable{
public Controller(){
people = new ArrayList<>();
casks = new ArrayList<>();
}
public void startNewCask(ActionEvent actionEvent) throws IOException {
FXMLLoader loader = new FXMLLoader();
Parent root = loader.load(getClass().getResource("../view/NewCask.fxml"));
Stage stage = new Stage();
stage.setTitle("New cask");
Scene scene = new Scene(root, 300, 275);
stage.setScene(scene);
stage.show();
}
}
Контроллер всплывающих окон
public class NewCaskController {
@FXML
private TextField price;
@FXML
private TextField volume;
@FXML
private TextField type;
@FXML
private Button confirm;
@FXML
public void handleConfirm(ActionEvent event) {
Stage stage = (Stage) confirm.getScene().getWindow();
stage.close();
}
JavaFX всплывающих окон
<AnchorPane maxHeight="305.0" maxWidth="260.0" minHeight="230.0" minWidth="260.0" prefHeight="246.0" prefWidth="260.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controller.NewCaskController">
<children>
<Label layoutX="12.0" layoutY="14.0" text="Klik op het kruisje om te annuleren." />
<Label layoutX="12.0" layoutY="35.0" text="Prijs nieuw fust (in euro's zonder €):" />
<TextField fx:id="price" layoutX="12.0" layoutY="56.0" promptText="Prijs" />
<Label layoutX="12.0" layoutY="87.0" text="Volume (in milliliter):" />
<TextField fx:id="volume" layoutX="12.0" layoutY="108.0" promptText="Volume" />
<Label layoutX="12.0" layoutY="139.0" text="Type" />
<TextField fx:id="type" layoutX="12.0" layoutY="160.0" promptText="Type" />
<Button fx:id="confirm" layoutX="12.0" layoutY="201.0" mnemonicParsing="false" onAction="#handleConfirm" text="Bevestig" />
</children>
</AnchorPane>
JavaFX оригинального окна
<SplitPane dividerPositions="0.5" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" orientation="VERTICAL" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controller.Controller">
<items>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0">
<children>
<Label layoutX="14.0" layoutY="14.0" text="Huidig fust" />
<Label layoutX="14.0" layoutY="58.0" text="Biersoort: " />
<ProgressBar fx:id="caskProgress" layoutX="14.0" layoutY="35.0" prefWidth="200.0" progress="0.5" AnchorPane.leftAnchor="12.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="35.0" />
<Label fx:id="beerTypeLabel" layoutX="81.0" layoutY="58.0" text="404 BIER NIET HIER" />
<Button layoutX="12.0" layoutY="82.0" mnemonicParsing="false" onAction="#startNewCask" text="Nieuw fust" />
<Button layoutX="113.0" layoutY="82.0" mnemonicParsing="false" text="Nieuwe gebruiker" />
<Button layoutX="261.0" layoutY="82.0" mnemonicParsing="false" text="Statistieken" visible="false" />
</children></AnchorPane>
</items>
<padding>
<Insets bottom="2.0" left="2.0" right="2.0" top="2.0" />
</padding>
</SplitPane>