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

JavaFX更改父FXML中的标签

萧奇
2023-03-14
    null

我是否可以从子控制器-b更改父FXML-A中标签的文本?

共有1个答案

毕浩渺
2023-03-14

controllerb中定义StringProperty:

public class ControllerB {

    private StringProperty text = new SimpleStringProperty();

    public StringProperty textProperty() {
        return text ;
    }

    public final String getText() {
        return textProperty().get();
    }

    public final void setText(String text) {
        textProperty().set(text);
    }

    // other code as before ...

}

Controllera中加载第二个fxml时,将标签的文本绑定到TextProperty:

public class ControllerA {

    @FXML
    private Label label ;

    @FXML
    private StackPane parentStackPane ;

    @FXML
    private void someHandlerMethod() throws Exception {
        FXMLLoader loader = new FXMLLoader(getClass().getResource("FxmlFileB.fxml"));
        Parent rootB = loader.load();
        ControllerB controllerB = loader.getController();
        label.textProperty().unbind();
        label.textProperty().bind(controllerB.textProperty());
        parentStackPane.getChildren().setAll(rootB);
    }

    // other code as before...
}

现在,当您在controllerb中调用settext(...)时,它将更新标签中的文本。

 类似资料:
  • > System.out正确显示标签上的id; 第二个控制器与嵌入在第一个控制器中的FXML文件绑定。如代码所示,第二个FXML文件/控制器是动态加载的:。 当从第二个控制器中的initialize方法设置id时,id会按预期显示在标签中: public void initialize(){this.setid(“12”);} 编辑: 此窗格声明为属性 第二个:

  • 我无法从其他类更改标签的文本。我需要不断更新主屏幕上的日期和时间,而我也可以同时执行其他功能。我使用了一个TimeSetting类,它扩展了Thread,在它的run()方法中,我使用setText()在无限循环中调用了updation命令,然后让该方法Hibernate一秒钟。但是在运行这个时,什么也没有发生,在关闭输出窗口时,我得到一个错误,说NullPointerExcpetion 下面是两

  • 我需要更改JavaFX中标签的锚点。我将锚点描述为选择来翻译底层节点的点。默认情况下,锚点似乎是左上角。 我试图通过如下描述的附加翻译来解决这个问题: 代码应转换标签,使其像右下角的锚点一样工作。这不起作用,因为在我执行代码时,标签的边界框是[minX:0.0,minY:0.0,minZ:0.0,宽度:-1.0,高度:-1.0,深度:0.0,maxX:-1.0,maxY:-1.0,maxZ:0.0

  • 我正在尝试为用Java编写的应用程序制作GUI。 我用Scene Builder制作了fxml文档,正确设置了fx: id,现在我正在尝试对表单进行简单的更改。 我的DocumentController: 我的外汇主文件: 我现在想要的一切,都是将LabelData设置为实际时间戳,但当我运行FX主文件时,什么都不会发生。有人能帮我吗? 谢谢你保罗 更新时间: 我的整个FXML文档: 我想要的一切

  • 在JavaFX中,如何使用“标签”显示随时间不断变化的值?

  • 为此使用的控制器是RootLayoutController.java 从这个MainMenubar.fxml文件内部也会加载,它是子fxml文件 此MainMenubar.fxml的控制器文件为MainMenubarController.java 我花了很多时间去寻找,如何从对子控制器组件执行的操作中更改父控制器组件?