我想在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();'? –