如何在主屏幕上的另一个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中应该出现的所有数据,更准确地说是从孩子到父母控制器类