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

在javafx中的视图(fxml)和控制器之间传递值

王楚青
2023-03-14

我的任务是在javafx中单击3个按钮时调用一个方法,该方法执行的代码只需更改所单击按钮的颜色。

根据场景,我在fxml中创建了3个按钮,并在控制器中定义了一个方法。我的任务代码很简单

myButton.setStyle("-fx-background-color:green");

现在请您告诉我如何才能获得被点击的特定按钮ID。这里myButton是被点击的按钮的fx: id。

提前谢谢。

共有2个答案

韦星文
2023-03-14

fx:id永远不会传递给控制器。相反,当通过FXMLLoader加载fxml时,它们用于将控件实例注入控制器。

当你的fxml有一个控件

<Button fx:id="myButton">

您需要确保在控制器内创建的按钮引用应具有相同的名称。否则,按钮的实例化将失败。

public class MyController {

   @FXML
   private Button myButton; // name should be same as the fx:id 
   ...
}

同样,如果您想在按钮上添加操作,您可以在FXML上添加它,

<Button fx:id="myButton" onAction="#myAction">

这将在控制器中查找具有相同名称的方法。每当您单击按钮时,它都会调用控制器中定义的方法。

public class MyController {

   @FXML
   private Button myButton; // name should be same as the fx:id 
   ...

   public void myAction(ActionEvent event) {
       // Do Something 
   }
}
常乐
2023-03-14

您可以执行以下操作:

@FXML
public void handleActionEvent(ActionEvent event) {
   Object source = event.getSource();
   if (source.equals(buttonA)) {
      buttonA.setStyle("-fx-background-color:red");
   } else if (source.equals(buttonB)) {
      buttonB.setStyle("-fx-background-color:green");
   } else if (source.equals(buttonC)) {
      buttonC.setStyle("-fx-background-color:blue");
   }
}

控制器内有三个按钮:

@FXML
private Button buttonA;

@FXML
private Button buttonB;

@FXML
private Button buttonC;

每个按钮都需要fxml中一致的id和onAction=“#handleActionEvent”。

 类似资料:
  • 问题内容: 我是iOS和Objective-C以及整个MVC范例的新手,我坚持以下几点: 我有一个充当数据输入表单的视图,我想给用户选择多个产品的选项。产品在另一个视图上以列出,并且我启用了多个选择。 我的问题是,如何将数据从一个视图传输到另一个视图?我将把选择保留在一个数组中,但是如何将其传递回先前的数据输入表单视图,以便在提交表单时将其与其他数据一起保存到Core Data? 我到处冲浪,看到

  • 问题内容: 我正在尝试将应用程序从Objective-C转换为Swift,但是我找不到如何使用Swift在视图之间传递数据。我的Objective-C代码是 这样做是从根本上获取变量TheNum,并将其传递给另一个视图控制器上的变量num。我知道这可能是一个简单的问题,但是我对Swift感到非常困惑,因此,如果有人可以解释他们如何将其更改为Swift,将不胜感激! 谢谢 问题答案: 假设我们站在

  • voneController.java VotwoController.java

  • 问题内容: 我想单击一列并将单元格索引发送到新阶段。但是我无法将参数()传递给另一个控制器。我已经尝试了所有方法,但仍然无法正常工作。 主控制器 EditClientController 问题答案: 如果要在FXML文件中指定控制器(因此您不能使用Deepak的答案), 并且 要访问方法中的索引(因此您不能使用José的答案),则可以使用控制器工厂:

  • 我试图在不同FXML场景的控制器之间传递数据。但是我不能将数据传递给另一个控制器。这是我的第一个控制器。 } 这是第二个控制器。 }

  • 我很难将参数从一个控制器传递到另一个控制器。 具体来说: LoginController向MainController传递。 null LoginController.java MainController.java