我有一個創建ImageView的方法,名爲createImageView(),它使用EventHanlders調用各種事件。我希望能夠在這個方法中使用局部變量。我通常做的是分配最終變量以在句柄(Event)方法中使用。使用局部變量的JavaFX事件
在該方法如下所述,當我去使用最終得到以下的錯誤:
最終局部變量inity這不能被分配,因爲它是在一個封閉的類型定義
最終本地可變inity這不能被分配,因爲它是在一個封閉的型
最終局部變量dragAnchor不能分配定義,因爲它是在一個封閉的型
當然定義,除去最後給出我這個消息:
不能引用非最終變量INITX在不同的方法
所以我有什麼做的,使這種方法的工作定義的內部類裏面?
private ImageView createImageView() {
double initX;
double initY;
Point2D dragAnchor;
imgView.setOnMousePressed(new EventHandler <MouseEvent>() {
public void handle(MouseEvent me) {
//when mouse is pressed, store initial position
initX = imgView.getTranslateX();
initY = imgView.getTranslateY();
dragAnchor = new Point2D(me.getSceneX(), me.getSceneY());
me.consume();
}
});
imgView.setOnMouseDragged(new EventHandler <MouseEvent>() {
public void handle(MouseEvent me) {
double dragX = me.getSceneX() - dragAnchor.getX();
double dragY = me.getSceneY() - dragAnchor.getY();
double newXPosition = initX + dragX;
double newYPosition = initY + dragY;
imgView.setTranslateX(newXPosition);
imgView.setTranslateY(newYPosition);
me.consume();
}
});
imgView.setOnMouseEntered(new EventHandler <MouseEvent>() {
public void handle(MouseEvent event) {
imgView.setEffect(new Glow(0.5));
event.consume();
}
});
imgView.setOnMouseExited(new EventHandler <MouseEvent>() {
public void handle(MouseEvent event) {
imgView.setEffect(new Glow(0.0));
event.consume();
}
});
return imgView;
}
感謝jewelsea。這對於雙打非常適用,但dragAnchor仍然給我帶來了同樣的問題。沒有biggie,我的解決方案似乎現在工作。 – Matt
已更新的示例顯示如何爲'dragAnchor'使用'ObjectProperty'。 – jewelsea
我有很多東西要學習...再次感謝。 – Matt