我似乎无法在JavaFX中移动矩形对象。我已将矩形放在堆叠窗格内,但每当我更改矩形的坐标时,它都不会移动(即使我更改了初始化的坐标)。所以,
Rectangle rect = new Rectangle(150,150,75,75);
将位于堆栈窗口的中心,以及
Rectangle rect = new Rectangle(2043,136,75,75);
每当我使用
rect.setX();
矩形根本不移动。我知道我错过了一些非常简单的东西,我只是想不出来。我不想使用转换,因为我的目标是简单地按箭头键的方向移动矩形几个像素。那究竟是我做错了什么?
答案 0 :(得分:5)
解决方案
如果要手动指定布局坐标(例如矩形的x,y坐标),请使用其他容器类型(例如Pane)。
背景
StackPane是一个托管布局窗格 - 它控制放置在其中的项目的布局(默认情况下以堆栈中的项目为中心)。因此,当您将Rectangle放置在StackPane中时,对于哪种坐标并不重要,布局管理器将移动您的矩形,使其位于堆栈的中心。
JavaFX有两个定位概念,一个是layout co-ordinates,另一个是translation deltas,它们被添加到布局坐标中。 TranslateTransitions通过修改翻译增量来工作。翻译适用于动画和暂时移动的东西。翻译独立于布局值并且不影响布局值,因此您可以在StackPane中放置一些内容并将TranslateTransition应用于它并且它仍然会移动,但它会从堆栈的中心移动,因为这是初始布局位置。