我有一个 JavaFX 2.0 应用程序,它由两个 FXML 文件和它们的两个控制器 + 一个“主”.java 文件组成。
在开始时,FXML1 被初始化,如下所示:
public void start(Stage stage) throws Exception {
stage.setTitle("Demo Jabber JavaFX Chat");
Parent root = FXMLLoader.load(getClass().getResource("fxml_example.fxml"),
ResourceBundle.getBundle("fxmlexample.fxml_example"));
Scene scene = new Scene(root, 226, 264);
stage.setScene(scene);
scene.getStylesheets().add("fxmlexample/fxmlstylesheet.css");
stage.show();
}
然后,当单击scene1 中的按钮时,在Controller1 类的事件处理程序中,我更改scene1 根目录,以便为用户显示新的gui 视图。在这个控制器中,我初始化了一些对象。例如,像这样:
public class FXMLExampleController {
//some fields...
private MySuperObject c;
@FXML protected void handleSubmitButtonAction(ActionEvent event) {
//some fields...
c = new MySuperObject(); //here i initialize my object, i'm interested in
try {
c.login(username, password); // some actions with this object, which i need to make.
Scene cc = buttonStatusText.getScene();
Parent root = null;
try {
//changing a scene content...
root = FXMLLoader.load(getClass().getResource("fxml_example2.fxml"),
ResourceBundle.getBundle("fxmlexample.fxml_example"));
} catch (IOException ex) {
Logger.getLogger(FXMLExampleController.class.getName()).log(Level.SEVERE, null, ex);
}
cc.setRoot(root);
}
而且,在那之后,我必须在下一个场景中对那个对象做一些工作,它不能是同一个类的新实例,而是我在第一个场景中初始化的对象。
我了解如何使用“标准 java”来完成所有这些,但我对使用 JavaFX + FXML 的这项任务感到有些困惑。