0
我使用下面的代碼來傳遞信息,但我想知道其他方式。在FXMLDocumentController的事件處理程序方法handleSubmitButtonAction中,我創建另一個窗口加載MainFXML文件。之後,我掌握了其控制器並將我的信息發送到主窗口。有沒有更好的方法來做到這一點?這是在JavaFX的窗口之間傳遞信息的最佳方式?
public class FXMLDocumentController implements Initializable {
@FXML
private TextField user;
@FXML
public void handleSubmitButtonAction(ActionEvent event) throws IOException {
Alert dialogo = new Alert(Alert.AlertType.INFORMATION, "User: " + user.getText() + " logged in.");
dialogo.showAndWait();
Stage stage2 = (Stage) user.getScene().getWindow();
stage2.close();
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("MainFXML.fxml"));
Parent root = (Parent) fxmlLoader.load();
MainFXMLController controller = fxmlLoader.<MainFXMLController>getController();
Scene scene = new Scene(root);
Stage stage = new Stage();
stage.setScene(scene);
stage.show();
controller.setUser(user.getText());
}
在MVC意義上使用應用程序作爲單例實例「控制器」?不漂亮,但在FX控制器類之間解耦。 –
我想知道哪個是最好的方法。由於fxml文件,每個javafx應用程序都是MVC的本質,對吧? –
最好的方法只是一個意見。每個人都可以有不同的意見。所以你可以根據不同的意見得到許多不同的答案,你不會接近確定最好的方式。無論如何,國際海事組織,如果它是大型應用程序,使用依賴注入機制,如[Gluon Ignite](http://gluonhq.com/labs/ignite/),使注入的對象JavaFX豆具有可觀察的屬性,並有你的UI項目綁定或監聽屬性的更改。但另一方面,您的問題所提供的解決方案對您而言可能最適合您,您決定。 – jewelsea