我有以下FXML结构:
<AnchorPane fx:id="menuPane">
<children>
<VBox>
<children>
<Label fx:id="Label1"> </Label>
<Label fx:id="Label2"> </Label>
<Label fx:id="Label3"> </Label>
<Label fx:id="Labeln"> </Label>
</children>
</VBox>
</children>
</AnchorPane>
我的问题是:我可以在一个方法中处理所有MOUSE_CLICKED事件,还是需要将以下lambda的每个标签写入?
LabelName.addEventHandler(MouseEvent.MOUSE_CLICKED, eventHandler->{});
对于一对标签来说,编写lambda表达式并不是一个问题,但是当我开始获得更多标签时,或者如果在程序运行时可以/将添加更多标签,我需要一种不同的方法。
我在stackoverflow中找到了一个选项,但我不知道我的位置中的“场景”是什么,因为我已经加载了 mainScreen.fxml ,而在MainScreenController中我不知道怎么去现场。
scene.addEventFilter(MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
System.out.println("mouse click detected! " + mouseEvent.getSource());}
});