使用AnchorPane将文本放在javafx中的形状上

时间:2016-02-09 17:01:27

标签: javafx

我有一个类似

的ArrayList
ArrayList<Rectangle> rectanlges= new ArrayList<Rectangle>();

这个arrayList中有几个矩形...带

anchorpane.getChildren().addAll(rectangles);

我确实展示了形状......但我想在每个矩形上放置一个文本......我用

尝试了
for (int i = 0; i < rectangles.size(); i++) {
    Text text = new Text("test");
                text.setFill(Color.GREEN);

                StackPane stack = new StackPane();

                stack.getChildren().addAll(rectangles.get(i), text);
}

但我很难向他们展示

 anchorpane.getChildren().addAll(rectangles);

我该如何解决?

enter image description here

1 个答案:

答案 0 :(得分:0)

只需将每个StackPane添加到anchorpane而不是每个Rectangle,并将Rectangle s的偏移量添加为AnchorPane布局参数{{1 }}

示例:

StackPane

或者,您可以使用AnchorPane anchorPane = new AnchorPane(); List<Rectangle> rectangles = Arrays.asList(new Rectangle(100, 100, 50, 50), new Rectangle(200, 100, 70, 300)); anchorPane.getChildren().addAll(rectangles.stream().map(rect -> { Text text = new Text("test"); text.setFill(Color.GREEN); StackPane stackPane = new StackPane(rect, text); AnchorPane.setLeftAnchor(stackPane, rect.getX()); AnchorPane.setTopAnchor(stackPane, rect.getY()); return stackPane; }).toArray(StackPane[]::new)); s with background:

Label