无法在JavaFX中移动矩形?

1 java javafx

我似乎无法在JavaFX中移动矩形对象.我已将矩形放在堆叠窗格内,但每当我更改矩形的坐标时,它都不会移动(即使我更改了初始化的坐标).所以,

Rectangle rect = new Rectangle(150,150,75,75);
Run Code Online (Sandbox Code Playgroud)

将在堆栈窗口的中心,以及

Rectangle rect = new Rectangle(2043,136,75,75);
Run Code Online (Sandbox Code Playgroud)

每当我使用

rect.setX();
Run Code Online (Sandbox Code Playgroud)

矩形根本不移动.我知道我错过了一些非常简单的东西,我只是想不出来.我不想使用转换,因为我的目标是简单地按箭头键的方向移动矩形几个像素.那我究竟做错了什么?

jew*_*sea 5

如果要手动指定布局坐标(例如,矩形的x,y坐标),请使用不同的容器类型(例如,窗格).

背景

StackPane是一个托管布局窗格 - 它控制放置在其中的项目的布局(默认情况下将项目放在堆栈中).因此,当您将矩形放置在StackPane中时,无关紧要是什么协调,布局管理器将移动矩形以使其位于堆栈的中心.

JavaFX有两个定位概念,一个是布局坐标,另一个是转换增量,它们被添加到布局坐标中.TranslateTransitions通过修改翻译增量来工作.翻译适用于动画和暂时移动的东西.翻译独立于布局值并且不影响布局值,因此您可以在StackPane中放置一些内容并将TranslateTransition应用于它并且它仍然会移动,但它会从堆栈的中心移动,因为这是初始布局位置.