JavaFX 和 FXML - 使用另一个 Controller 的数据更新标签

标签 java javafx fxml

我有一个带有标签和按钮的窗口,另一个带有文本字段和按钮的窗口。从主窗口中,我想使用按钮打开另一个窗口,在新窗口的文本字段中输入一些内容,然后单击新窗口上的按钮后,我希望它关闭并使用文本更新主窗口标签已输入。我还希望新窗口是模态的。

Main Window

New Window

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/

相关文章:

java - 如何将事件处理程序附加到 JavaFX Stage/Window Minimize Button?

JavaFX Swing 浏览器非常慢

JavaFX - 如何同步 FXML 文件中声明的两个元素的滚动条

Java:应用程序启动方法中出现异常 java.lang.reflect.InitationTargetException

java - 如何设置 TableColumnValue JavaFX TableView

java - 创建 spring MockHttpServletResponse 时出错,即使在添加 javax.servet-api 依赖项后 MissingResourceException

java - Spring MVC 应用程序中用户之间的消息传递

java - XMLless JPA 2.1 中 EntityManager 为 null

java - 如何在 JavaFX 中扩展 GridPane 以覆盖 add() 会导致 NPE、场景生成器中断

java - Springboot : Localhost:8080 results in Whitepage-Error instead of showing content