如何使用自己的控制器将Textfield从一个弹出窗口添加到主屏幕



如何在主屏幕上的另一个textfield中添加一个双重弹出式。我有一个电影院系统,其中有一个主页显示总价,而且我也有一个饮料的弹出窗口。我如何从饮料弹出窗口中获取值,以添加到主窗口中的Textfield。我已经分配了带有变量完成的两个类,该类要添加在一起并在我单击"完成"按钮时关闭窗口。但是不是。

Drinkspopup的控制器

import javafx.event.ActionEvent;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
import static sample.FilmsController.completetotal;
public class DrinksController {
    public TextField watertf;
    public TextField coketf;
    public Button totalbut;
    public TextField totaltf;
    public Button finishdrinks2;
    private FilmsController fc = new FilmsController();
    /*changed button to private */
    /*public TextField gettotaltf() {
        return totaltf;
    }
    private FilmsController parent;*/

    private Drinks drink = new Drinks();
   /* public void setParent(FilmsController fc) {
        // Remember the reference to the parent GUI, then we can call its methods
        parent = fc;
    }*/

    /*added action event*/
    public void addrinks(ActionEvent actionEvent) {
        try {
            int water = new Integer(watertf.getText());
            int coke = new Integer(coketf.getText());
            double result = water * (1.75) + coke * (1.25);
            totaltf.setText("" + result);
            completetotal += result;
        } catch (NumberFormatException e) {
            totaltf.setText("Not a Number");

        }
    }
    /*This is supposed to add the drinks then add it to the variable complete total*/
    public void finishdrinksclose2(ActionEvent actionEvent) {
        int water = new Integer(watertf.getText());
        int coke = new Integer(coketf.getText());
        double result = water * (1.75) + coke * (1.25);
        completetotal += result;
        totaltf.setText("" + result);
        Stage stage = (Stage) finishdrinks2.getScene().getWindow();
        stage.close();
        }
    }

mainscreen filmscontroller

 public void comptotal(ActionEvent actionEvent) {
    try {
        int adult = new Integer(adulttf.getText());
        int child = new Integer(childtf.getText());
        double filmprice= new Double(filmpricetf.getText());
        double result = adult * (filmprice) + child*(filmprice);
        completetotal+= result;
        totalpricetf.setText("" + result);
    }
    catch (NumberFormatException e) {
        totalpricetf.setText("Not a Number");
    }}
}

我仅添加了在filmscontroller上执行过程的代码的一部分。

当您尝试调用弹出窗口

时,让我们想象一下您的主屏幕
click.setOnAction(event -> {
    FXMLLoader loader = new FXMLLoader();
    try {
        Parent parent =  loader.load(getClass().getClassLoader().getResource("second.fxml").openStream());
        Stage stage = new Stage();
        stage.setScene(new Scene(parent));
        stage.initModality(Modality.APPLICATION_MODAL);
        Children children = loader.getController();
        children.setController(this);
        stage.show();
    } catch (IOException e) {
        e.printStackTrace();
    }
});

让您想象一下您的弹出窗口

@FXML
private JFXTextField field;
private Controller controller;
@FXML private Button cls;
@Override
public void initialize(URL location, ResourceBundle resources)
{
    cls.setOnAction(event -> {
            this.controller.setTextIntoTextField(field.getText());
        Stage stage = (Stage)((Button)(event).getSource()).getScene().getWindow();
        stage.close();
    });
}
public void setController(Controller controller) {
    this.controller = controller;
}

这是一种回调方法,可以帮助您加载Mainscreen中应该出现的所有数据,更准确地说是从孩子到父母控制器类

最新更新