我想编写类似于JavaFX绑定的代码。我有Figures,并通过“ getBounds()。getLocation()”得到了Figure的中点。首先,我只想模拟简单的位移。如果我将源图形围绕矢量dx移动,则相关图应沿相同方向移动,并且位移应具有相同长度。
public void Bindings.bind(Figure depend, Figure source){
Point p = new Point(source.getBounds().getLocation());
source.addFigureListener(e ->{
int dx = source.getBounds().getLocation().getX() - p.getX();
int dy = source.getBounds().getLocation().getY() - p.getY();
if(dx!=0; dy!=0){
depend.move(dx,dy);
p.x = source.getBounds().getLocation().getX();
p.y = source.getBounds().getLocation().getY();
}
});
}
如果我现在绑定三个数字,那么我会得到一个StackOverflow错误:
Bindings.bind(f2,f1);
Bindings.bind(f3,f2);
Bindings.bind(f1,f3);
现在我必须打破这些循环依赖性。我认为最好的方法是检查移动命令是否来自“控制台”(鼠标,键盘)。否则,数字将不会移动:在我移动f1的情况下,f2也应该移动(f3一定不能参与)。有人知道我该如何解决吗?