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

如何从另一个JavaFX控制器在JavaFX TextField控制器中设置字符串或文本

国言
2023-03-14

在我的javafx应用程序中,我们有两个FXML文件,第一个。FXML和second.FXML,相同的第一个Controller.java和secondController.java现在主要的问题是第一个。FXML包含TextField name和on Button当用户单击那个按钮时second.FXML显示在second.FXML中我有一个组合框和一个按钮当用户单击second.FXML按钮时我想把组合框的值设置为first.FXML name TextField。

我在谷歌寻找解决方案从过去三天,但没有得到适当的解决方案。在Java swing中,我使用允许从另一个JFrame访问JFrame的静态公共字段来执行此操作。

急切地等待有帮助的答复。

共有1个答案

韶云瀚
2023-03-14

从您的secondcontroller中公开StringProperty。当按钮被按下时,设置它的值:

public class SecondController {

    private final StringProperty selectedValue = new SimpleStringProperty(this, "selectedValue", "");

    public final StringProperty selectedValueProperty() {
        return selectedValue ;
    }

    public final void setSelectedValue(String value) {
        selectedValue.set(value);
    }

    public final String getSelectedValue() {
        return selectedValue.get();
    }

    @FXML
    private final ComboBox<String> comboBox ;

    @FXML
    private void handleButtonPress() {
        selectedValue.set(comboBox.getValue());
    }
}

FirstController中,提供设置文本的方法:

public class FirstController {
    @FXML
    private TextField textField ;

    public void setText(String text) {
        textField.setText(text);
    }
}

现在,当您加载FXML文件时,只需观察secondcontroller中的属性,并在firstcontroller发生更改时调用该方法:

FXMLLoader firstLoader = new FXMLLoader(getClass().getResource("first.fxml"));
Parent first = firstLoader.load();
FirstController firstController = firstLoader.getController();

FXMLLoader secondLoader = new FXMLLoader(getClass().getResource("second.fxml"));
Parent second = secondLoader.load();
SecondController secondController = secondLoader.getController();

secondController.selectedValueProperty().addListener((obs, oldValue, newValue) -> 
    firstController.setText(newValue));
 类似资料:
  • 我对stackoverflow和javafx都是新手,所以请友好一点。 描述我正在做的事情: 我正在做一个简单的问答游戏。第一个窗口就像一个欢迎/开始屏幕,当点击那个按钮时,我们会到达第二个屏幕,所有的类别按钮都在那里,当点击其中一个时,它会随机选择用户选择的类别的问题第三个也是最后一个窗口将显示问题类别作为标签,问题作为文本字段,回答作为文本字段。 问题:每当一个类别被点击时,我需要当前控制器来

  • 因此,我将一个名为“size”的整数保存到一个名为SettingsStageController的控制器类中。java和我希望通过另一个名为GameStageController的控制器类文件访问该变量。java,但我似乎不知道怎么做。 设置标记控制器。JAVA GameStageController.java

  • 我有两个控制器和。我正在读一本书的内容。来自的txt文件,我希望将该文本放置在的文本区域中。代码在中运行并读取良好,但当打开中的窗口时,从中读取的内容。文本内容在文本区域中不可见。我的显示String mine包含内容,但它不显示在的文本区域中。请帮助任何人。非常感谢。 FXMLDocumentController代码 在中,有一个我删除了和,这样代码就可以工作了。

  • 我有一个简单的主: MainClassFXGUI.java 和三个fxml文件,其中一个包含其他两个文件 但是我有一个空指针异常,或者如果我移动handleButtonAction函数中对象'controller'实例化的代码,我没有任何错误,但是标签没有改变。 也许我可以在MainClassFXGUI.java中创建一个静态场景和一个静态阶段?但我不知道我该怎么用它们... MainClassF

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

  • 和访问字段,如: 因为我希望有更好的方法来做到这一点。