JavaFX-建议在setLayoutX(x)上使用relocate(x,y)移动对象,但我可以';t修改重新定位参数

JavaFX-建议在setLayoutX(x)上使用relocate(x,y)移动对象,但我可以';t修改重新定位参数,java,javafx,Java,Javafx,我已经检查了API如何更改图形对象的位置。我成功地使用了setLayoutX和setLayoutY(它不断地嵌入对象x和y),但他们建议我改用重定位(x,y) 我想做正确的代码,但问题是我不能使用重定位(x,y)来移动。如果我使用30作为参数,它会工作。但是我想用一种能让我移动物体的东西。我以为这就是重新安置的目的 当我将参数设置为x++或x+=10时,我得到了这个错误“从内部类引用的局部变量必须是final或有效final” 代码: 公共类LineClass扩展了DrawingLine{ 私有

我已经检查了API如何更改图形对象的位置。我成功地使用了setLayoutX和setLayoutY(它不断地嵌入对象x和y),但他们建议我改用重定位(x,y)

我想做正确的代码,但问题是我不能使用重定位(x,y)来移动。如果我使用30作为参数,它会工作。但是我想用一种能让我移动物体的东西。我以为这就是重新安置的目的

当我将参数设置为x++或x+=10时,我得到了这个错误“从内部类引用的局部变量必须是final或有效final”

代码:

公共类LineClass扩展了DrawingLine{
私有最终组根;
私人动画定时器;
//用于存储实际帧的变量
私有整数i=0;
//主要时间线
私人时间表;
公共LineClass(){
int x=100;
int y=200;
圆=新的圆(x,y,10);
根=新组(圆);
//创建用于移动圆的时间线
时间线=新时间线();
timeline.setCycleCount(timeline.unfinite);
timeline.setAutoReverse(真);
double xx=circle.getLayoutX();
//使用factory创建keyValue:将圆缩放2倍
//KeyValue keyValueX=新的KeyValue(circle.setLayoutX(3));
KeyValue keyValueX=新的KeyValue(circle.scaleProperty(),2);
KeyValue keyValueY=新的KeyValue(circle.scaleYProperty(),2);
//创建一个关键帧,在时间2s达到keyValue
持续时间=持续时间。毫秒(1000);
//当到达关键帧时,可以添加特定动作
EventHandler onFinished=新的EventHandler(){
公共无效句柄(ActionEvent t){
圈。重新安置(30,30);
/*double xx=circle.getLayoutX();
圆.setLayoutX(xx+=10);
//复位计数器
i=0*/
}
};
KeyFrame KeyFrame=新的关键帧(持续时间,onFinished,keyValueX,keyValueY);
timeline.getKeyFrames().add(keyFrame);
timeline.play();
//timer.start();
}
公共父getView(){
返回根;
}
}

提前谢谢。

我现在已经解决了这个问题

解决此问题的代码:

            double x=circle.getLayoutX();
            double y=circle.getLayoutY();

            x+=10;
            y+=10;
            circle.relocate(x,y);

你为什么还需要修改
xx
?我已经解决了这个问题。变量必须是局部变量或最终变量。所以我把它设为局部变量,从getLayoutX取x,然后使用重定位(x+=10,y+=10)。每次我重新定位()时,LayoutX会自动继承正确的值(对象的x位置)。为什么不直接重新定位(x+10,y+10)?首先,为什么要修改这些变量(您似乎不再使用这些变量)?“变量必须是局部变量或最终变量”是不正确的。lambda表达式中引用的局部变量必须是final。所以它不能是局部的和非最终的
            double x=circle.getLayoutX();
            double y=circle.getLayoutY();

            x+=10;
            y+=10;
            circle.relocate(x,y);