当前位置: 首页 > 知识库问答 >
问题:

返回更新的Javafx控制器

黄仲渊
2023-03-14

目标是打印标签的当前文本。标签在整个程序中不断变化,使用当前的方法,我只能检索标签的初始化值。

我用来检索控制器实例的内容:

public class ShowWindow {
    public static <T> T getController(String path){
        try {
            FXMLLoader fxmlLoader = new FXMLLoader(ShowWindow.class.getResource(path));
            Parent root = fxmlLoader.load();
            return fxmlLoader.getController();
        }catch(IOException ex){
            ex.printStackTrace();
        }
        return null;
    }
}
private void close(Stage stage) {
    String name = ShowWindow.<MainController>getController(fxmlFile).nameLabel.getText();
    System.out.println(name);
    stage.close();
}
public class MainController implements Initializable {
    // Label.
    // Code that changes label.
}
public class ShowWindow {
    public static <T> T showWindow(String path){
        try {
            FXMLLoader fxmlLoader = new FXMLLoader(ShowWindow.class.getResource(path));
            Parent root = fxmlLoader.load();
            Stage stage = new Stage();
            stage.initModality(Modality.APPLICATION_MODAL);
            stage.setScene(new Scene(root)); 
            stage.showAndWait();
            return fxmlLoader.getController();
        }catch(IOException ex){
            ex.printStackTrace();
        }
        return null;
    }
}

共有1个答案

谢诚
2023-03-14

这就是房产派上用场的地方。您的代码当前只检索初始值,请使用属性监视标签文本何时更改:

label.textProperty().addListener(new ChangeListener<String>() {
        @Override
        public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
            System.out.println(newValue);
        }
 });
 类似资料:
  • 在我的程序中,我有一个选项卡窗格,每个选项卡都有自己的FXML文件和控制器。我已经为选项卡2(Schedular)加载了FXML文件。我试图从父控制器(FXML文档)调用子控制器(调度程序)中的函数。当我使用FXML Loader加载控制器时,它返回null。我该如何解决这个问题。 这是我的主要代码: 主要FXML文档:

  • 问题内容: 我昨天在JavaFX中构建了一个小应用程序。我想在Controller类中获取应用程序的场景。每次尝试在控制器类中获取场景时,都会出错。我可以在Controller类的Button上设置OnKeyPressed方法,效果很好。但是,只有在选择Button后,它才能正常工作。我只能在Main类方法replaceSceneContent中获得场景。我已经读过这个问题,但是我在initial

  • 我昨天在JavaFX中构建了一个小应用程序。我想在Controller类中获取应用程序的场景。每次我试图在控制器类中获取场景时,我都会出错。我可以在Controller类中的Button上设置OnKeyPested-method,工作正常。但是只有当按钮被选中时,它才工作正常...我可以只在Main类方法replace eSceneContent中获取场景。我已经读过这个问题了,但是我在初始化方法

  • 我有一个进度条,我试图在控制器的javaFX中更新它。我正在根据一个名为Generate()的函数更新进度条,如果它被调用,它应该更新主控制器内的进度条。但是,我拥有的代码不会更新它,而是更新了进度条的新实例。 我的DrawerContentController中的Generate方法是: 在我的主控制器中,我使用场景构建器通过fxml设置了进度条,我正在尝试从DrawerContentContr

  • 我无法完成的任务是将参数从一个场景传递到另一个场景并返回。 或者换句话说:主控制器加载子控制器的fxml,将对象传递给子控制器,切换场景。不得有两扇开着的窗户。工作完成后,副控制器将场景切换回主控制器,并将一些对象传递回主控制器。这就是我失败的地方。 这个问题和这个问题很相似但仍然没有答案。传递参数JavaFX FXML在注释中也提到了: 有没有人知道如何在没有外部库的情况下实现这一点?