私はそれは簡単な質問だと思うが、それは仕事で長い日だったし、今は正しい方法を理解できない。Java FX Controller経由で他のビューにデータを渡す
私は3つのFXMLファイルを持っています。
Menge.fxml
Start.fxml
Suche.fxml
私はActionListener
MainController
内部で通常の
@Override
public void start(Stage primaryStage) {
try {
AnchorPane root = (AnchorPane)FXMLLoader.load(getClass().getResource("Start.fxml"));
Scene scene = new Scene(root);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
としてMain.javaから始めています
@FXML
void actionListenerMenge(ActionEvent event) {
try {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("Menge.fxml"));
Parent root1 = (Parent) fxmlLoader.load();
Stage stage = new Stage();
stage.setScene(new Scene(root1));
stage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
FXMLLoaderを使用してSuche.fxml
を開きます。 私のSuche-Viewの中にbutton
があります。これは、ユーザーが特定のデータレコードを検索する場所の別のシーンを開きます。私は私のMenge.fxml
からの眺めを更新するMengeController
@TextField
内の値を編集したい私はFXMLLoader
FXMLLoader loader = new FXMLLoader(getClass().getResource("Menge.fxml"));
try {
Parent root = loader.load();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
MengeController controller = (MengeController)loader.getController();
をMengeController
をロードしています
@FXML
void actionListenerSuche(ActionEvent event) {
try {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("Suche.fxml"));
Parent root1 = (Parent) fxmlLoader.load();
Stage stage = new Stage();
stage.setScene(new Scene(root1));
stage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
SucheController
。しかし、私が行う場合
controller.setTextFieldValue("abc")
それは更新されていません。 MengeController
を2回ロードして2つのインスタンスがあるので、それが必要であることがわかります。しかし、私はそれを一度だけロードする方法や、TextField
をMengeController
にアップデートするために注入する方法を理解していません。
と
はその後Suche.fxmlをロードし、あなたのMengeController
内のコードが見えます。 –フローはスタート - > ButtonClickを介して 'Menge.fxml'(テーブルビューを含む)を開きます - >' Suche.fxmlを開きます。 (ボタンは 'Menge.fxml'にあります)。 – Kevin
あなたはその質問を編集できますか?それは何ですか... –