【发布时间】:2015-03-03 15:44:45
【问题描述】:
何时使用翻译以及何时重定位以移动节点?归根结底,他们似乎在做同样的事情(视觉上);移动节点;第一个通过对原点进行平移(x,y 保持不变),第二个通过更改 x,y 坐标。 所以假设我想在屏幕的特定点移动一个节点..我应该使用 node.relocate(x,y) 还是 node.setTranslateX(x), node.setTranslateY(y)?
为了演示我的意思,我制作了一个您可以玩的示例程序: 屏幕上的一个矩形,其位置由 4 个滑块确定(其中 2 个控制布局 x,y,另外两个控制平移 x,y)。
/* imports are missing */
public class TransReloc extends Application{
@Override
public void start(Stage primaryStage) throws Exception {
Group root = new Group();
Rectangle rect = new Rectangle(100, 50, Color.BLUE);
root.getChildren().add(rect);
VBox controlGroup = new VBox();
Slider relocX = new Slider(-100, 100, 0 );
Slider relocY = new Slider(-100, 100, 0 );
Slider transX = new Slider(-100, 100, 0 );
Slider transY = new Slider(-100, 100, 0 );
rect.layoutXProperty().bind(relocX.valueProperty());
rect.layoutYProperty().bind(relocY.valueProperty());
rect.translateXProperty().bind(transX.valueProperty());
rect.translateYProperty().bind(transY.valueProperty());
controlGroup.getChildren().addAll(relocX, relocY, transX, transY);
root.getChildren().add(controlGroup);
controlGroup.relocate(0, 300);
Scene scene = new Scene(root, 300, 400, Color.ALICEBLUE);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
【问题讨论】: