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

JavaFX从控制器到另一个类获取按钮

甘永春
2023-03-14

我有我的UIController类和一个按钮方法类。按钮方法类包含按钮操作的所有代码。我需要能够使用按钮方法类中控制器类中的按钮。例如,我在控制器类中定义了这些

ButtonMethods button = new ButtonMethods();
@FXML Button buttonLockdown;
@FXML Button buttonRelease;

例如,单击按钮时,按钮锁定有一个动作事件

@FXML
private void actionLockdown(ActionEvent event) {
    button.lockdown();

理想情况下,我希望按钮方法可以做到这一点:

public void lockdown() {
    buttonLockdown.setDisable(true);
    onLockdown = true; 
    buttonRelease.setDisable(false);

出于各种原因,我不能将代码放在动作事件中,而将按钮对象放在参数中会让我的操作变得太混乱。那么如何将FXML对象放入button类中呢?

共有1个答案

鲜于高明
2023-03-14

尝试将UIController本身作为参数发送:

private UIController thisController;

@Override
public void initialize(URL url, ResourceBundle rb) {
    thisController = this;
}

@FXML
private void actionLockdown(ActionEvent event) {
    button.lockdown(thisController);

然后呢

public void lockdown(UIController controller) {
    controller.getButtonLockdown().setDisable(true);
    onLockdown = true; 
    controller.getButtonRelease().setDisable(false);

您还可以在适当的情况下使用绑定。

 类似资料:
  • 我是JavaFx新手,因此我找不到解决问题的方法 假设我有以下应用程序结构: 在SecondController中显示文本的最佳/最佳方式是什么,从FirstController传递文本。我的意思是,我在中输入一个文本,然后按下按钮,按下按钮后,我希望文本显示在使用另一个控制器的中。我已经阅读了很多关于和可以用来解决这个问题的知识,但不幸的是,我无法实现一个有效的解决方案。 如果你们专家能在这方面

  • 需要你的帮助!这可能是更多的设计角度,但我在我的应用程序中使用这个模式,所以想得到一个想法。 我的问题是直接或间接地从一个控制器访问另一个控制器。是否有任何优雅的设计方法来做到这一点,而不是在另一个控制器中保留一个控制器的引用。 提前致谢

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

  • 我想在单击该按钮时从interface_pasienController上的Interface_adminController调用autoRefresh()方法。但是有一个错误“java.lang.NullPointerException”。代码怎么了? 线程“JavaFX Application thread”java.lang.RuntimeException中的异常:java.lang.Re

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

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