我有一个带有标签和按钮的窗口,另一个带有文本字段和按钮的窗口。从主窗口中,我想使用按钮打开另一个窗口,在新窗口的文本字段中输入一些内容,然后单击新窗口上的按钮后,我希望它关闭并使用文本更新主窗口标签已输入。我还希望新窗口是模态的。
public class MainController {
@FXML
public void showNewWindow() {
try {
Stage newWindowStage = new Stage();
newWindowStage.setTitle("New Window");
newWindowStage.initModality(Modality.APPLICATION_MODAL);
VBox root = FXMLLoader.load(getClass().getResource("newWindow.fxml"));
Scene scene = new Scene(root);
newWindowStage.setScene(scene);
newWindowStage.showAndWait();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class NewWindowController {
@FXML
private TextField textField;
@FXML
public void updateMainWindowLabel() {
// update label in main window
// close new window
}
}
我知道它的设置根本不正确,但希望它能解释我正在尝试做的事情。
最佳答案
您需要 2 个阶段才能完成您想要的操作(不仅仅是 2 个场景)。
Stage st
st.setOnCloseRequest(e -> {
});
将允许在阶段关闭时执行您想要的任何代码(您的新窗口)。
然后,您在 TextField 对象上使用 getText()
,并在主舞台 Label 对象上使用 setText()
。
st.initModality(Modality.APPLICATION_MODAL);
...将使其成为模态。
关于JavaFX 和 FXML - 使用另一个 Controller 的数据更新标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45253216/