由于某种原因,textExampleTwo.setLayoutX(40)实际上不会导致Text向右移动。这是个窃听器还是我漏掉了一些重要的东西?
public void start(Stage stage) throws Exception {
FlowPane flowPane = new FlowPane();
flowPane.setOrientation(Orientation.VERTICAL);
Text textExampleOne = new Text("An example - 1");
Text textExampleTwo = new Text("An example - 2");
textExampleTwo.setLayoutX(40.0);
flowPane.getChildren().addAll(textExampleOne, textExampleTwo);
Scene applicationScene = new Scene(flowPane);
stage.setHeight(400.0);
stage.setWidth(400.0);
stage.setScene(applicationScene);
stage.show();
}

发布于 2016-11-26 15:48:39
你错过了一些重要的事情:
许多Pane,包括FlowPane,决定了自己孩子的位置。用于定位layoutX和layoutY属性。如果将一个新值分配给其中一个,并且Node是一个布局的子元素,而该布局本身就是子布局,那么这只会导致在下一个布局传递过程中要更改的位置。
这方面的例外是Node,其managed属性设置为false。这将导致既没有分配 layoutX ,也没有分配 layoutY。
在你的例子中,你似乎想要两者的结合。
在这种情况下,可以通过设置页边距来达到期望的效果。
// set all insets except the left one to 0
FlowPane.setMargin(textExampleOne, new Insets(0, 0, 0, 40));但是请注意,这并没有将x位置设置为40,但它在Node的左侧保留了大小为40的空间。如果在此节点之前添加足够多的子节点将其移动到第二列,则此间距将用于计算到列开头的距离。
https://stackoverflow.com/questions/40819936
复制相似问题