我想在JavaFX中创建一个包含按钮的程序,点击该按钮后,会创建一个圆并将其添加到形状的ArrayList中。以下是我的代码:JavaFx:从事件处理程序中访问对象
createCircleBtn.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
Circle circle1 = new Circle();
shapes.add(circle1);
circle1.setCenterX(event.getX());
circle1.setCenterY(event.getY());
circle1.setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
// doesn't work because "circle1" must be declared final (constant)
circle1.setCenterX(event.getX());
// "this" doesn't refer to "circle1"
this.setCenterY(event.getY());
}
});
mainPane.getChildren().add(circle1);
}
});
我的问题是 - 如何从内部句柄方法访问“circle1”? 在JavaScript中,我们使用e.currentTarget
。
我无法宣布“circle1”最终,因为我需要在之后进行更改。
您可以在'handle'方法和'EventHandler'作用域之外定义'Circle'实例。 –
@BranislavLazic如果你的意思是第二个句柄方法,我的Circle实例被定义在句柄方法的外部,并且我不能在第一个句柄方法之外声明,因为必须在单击该按钮之后创建该圆圈。 – user3870075
难道你不能只声明它是'最后的'吗?即'final Circle circle1 = new Circle();'? –