【发布时间】:2015-05-10 14:16:25
【问题描述】:
我目前正在为我的学习做一个 Java(+ 使用 MySQL)应用程序:一个医院的数据库
我使用 JavaFX 对我的界面进行编码。 我有一个主 FXML(用于一般视图),其中有选项卡,在每个选项卡中我使用 (fx:include) 导入另一个 FXML。这样我的应用程序的每个模块都有自己的Controller和自己设计的View。
如何将变量从主控制器传递给其他控制器?
谢谢! 编辑:让我告诉你我的代码
所以首先是我加载我的 fxml 的类(我首先在 Connexion 窗口上,如果连接所需的信息正常,我用主界面加载 fxml Main)然后我设置连接(THE我需要发送的变量)从我的 fxml Connexion 到 FXML Main
public class MainApp extends Application {
private Stage primaryStage;
private Connection conn;
MainController controllermain = new MainController();
//ConnexionController controllerconnex;
@Override
public void start(Stage primaryStage) throws Exception {
this.primaryStage = primaryStage;
this.primaryStage.setTitle("BASE DE L'HOPITAL DU ZOB");
showConnexion();
}
public void showConnexion() {
try {
FXMLLoader loader = new FXMLLoader();
loader.setLocation(MainApp.class.getResource("Connexion.fxml"));
Parent page = (AnchorPane) loader.load();
Scene scene = new Scene(page);
primaryStage.setScene(scene);
primaryStage.show();
ConnexionController controller = loader.getController();
controller.setMainApp(this);
} catch (IOException e) {
e.printStackTrace();
}
}
public void showMainApp(Connection conn) {
try {
FXMLLoader loader = new FXMLLoader();
loader.setLocation(MainApp.class.getResource("Main.fxml"));
AnchorPane page = (AnchorPane) loader.load();
Scene scene = new Scene(page);
primaryStage.setScene(scene);
primaryStage.show();
this.conn = conn;
controllermain = loader.getController();
controllermain.setMainApp(this);
controllermain.setConnexion(conn); // I want to send the variable conn to the others
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
然后这是我的主控制器,你可以看到我只使用 set 方法获得变量连接,然后我可以将它发送到另一个控制器
public class MainController implements Initializable {
private MainApp mainApp;
private Button retour;
protected Connection conn;
FXML AchorPane ;
public MainController() {
}
@Override
public void initialize(URL url, ResourceBundle rb) {
}
public void setMainApp(MainApp mainApp) {
this.mainApp = mainApp;
}
public void setConnexion(Connection conn){
this.conn=conn;
}
public void handleRetour(){
mainApp.showConnexion();
}
}
}
【问题讨论】: