【发布时间】:2020-02-26 02:18:29
【问题描述】:
我正在做一个 javafx 程序,当我试图让多个节点共享相同的 onAction 函数时,我被卡住了。
这是程序内部的37个标签节点,我将它们添加到一个ArrayList中,它们都共享相同的功能blockChange
<Label fx:id="b66" onMouseClicked="#blockChange" text="Label" GridPane.columnIndex="3">
<font>
<Font name="System Bold" size="14.0" />
</font>
</Label>
我尝试实现每次单击标签时更改标签文本的功能。但我无法指定哪个是调用该函数的标签。我想知道是否有任何方法可以在 Controller 中获取调用节点?
@FXML
void blockChange(MouseEvent event){
//I want to get the calling label here
}
【问题讨论】:
-
类
MouseEvent继承方法getSource() -
我总是更喜欢给每个节点自己的监听器。由于您已经将这些放在列表中,您可以遍历列表并为每个节点注册一个侦听器(在控制器的
initialize()方法中)。这样,触发事件的标签就是注册监听器的标签;这样可以避免调用getSource()并向下转换结果。 -
哦,非常感谢您提供这些信息
标签: java javafx fxml scenebuilder