问题描述
我将使用 JavaFX 构建两步注册表。任何人都知道如何将第一个控制器输入传递给第二个。以及如何在操作事件上使用这些值来更新我的数据库?
这是我如何将我的第一个场景连接到第二个场景。并将我的输入发送到第二个场景控制器。
public void btnNextPage(){
try{
Parent fxml = FXMLLoader.load(getClass().getResource("stdReg2.fxml"));
FXMLLoader loader=new FXMLLoader(getClass().getResource("stdReg2"));
//Parent root = (Parent) loader.load();
StdReg2 stdreg2=loader.getController();
stdreg2.getTexts(txtFirstName.getText(),txtStdid.getText(),txtLastName.getText(),txtBd.getEditor().getText(),txtUsrEmail.getText(),txtUsrPass.getText(),img);
//Parent fxml = FXMLLoader.load(getClass().getResource("stdReg2.fxml"));
contentArea.getChildren().removeAll();
contentArea.getChildren().setAll(fxml);
//StdReg2 stdreg2=fxml.getConroller();
} catch (IOException ex){
Logger.getLogger(Dashboard.class.getName()).log(Level.SEVERE,null,ex);
System.out.println(ex);
}
这里是我如何将第一个控制器输入到第二个控制器。
public void getTexts(String txtFirstName,String txtStdid,String txtLastName,String txtBd,String txtUsrEmail,String txtUsrPass,File img) throws FileNotFoundException {
String firstname = txtFirstName;
String lastname = txtLastName;
String emid = txtStdid;
String usrBD = txtBd;
String usrEmail = txtUsrEmail;
String usrPass = txtUsrPass;
}
我的问题是,如何在我的操作事件上使用此输入并将第一个控制器数据和第二个控制器数据添加到我的数据库中,因为我无法在第二个控制器的其他方法中使用这些属性。
谢谢,祝你有美好的一天。 ?
解决方法
为了获得对控制器的引用,您需要创建一个具有正确路径的 FXMLLoader
实例,然后使用该实例加载 FXML:
public void btnNextPage(){
try{
//Parent fxml = FXMLLoader.load(getClass().getResource("stdReg2.fxml"));
//FXMLLoader loader=new FXMLLoader(getClass().getResource("stdReg2"));
//Parent root = (Parent) loader.load();
FXMLLoader loader = new FXMLLoader(getClass().getResource("stdReg2.fxml"));
Parent fxml = loader.load();
StdReg2 stdreg2 = loader.getController();
stdreg2.getTexts(txtFirstName.getText(),txtStdid.getText(),txtLastName.getText(),txtBd.getEditor().getText(),txtUsrEmail.getText(),txtUsrPass.getText(),img);
contentArea.getChildren().removeAll();
contentArea.getChildren().setAll(fxml);
} catch (IOException ex){
Logger.getLogger(Dashboard.class.getName()).log(Level.SEVERE,null,ex);
System.out.println(ex);
}
}
不清楚您调用的各种方法实际上做了什么,但这设置了从另一个控制器调用一个控制器中的方法的正确方法。