如何使用JavaFx向StackPane添加垂直线

时间:2013-08-26 17:05:31

标签: javafx line

我正在基于JavaFx节点创建交互式gant图表。 图片显示了我的概念。

1. Operations are placed inside of VBox
2. VBox is placed inside of StackPane and then inside of ScrollPane.
3. I have vertical time lines responsible for hours.

这是我用于添加垂直时间轴的方法:

//sp is my StackPane
//line every 60 px / minutes

for (int i = 0; i < lines.length; i++) {
   lines[i] = new Line(i * 60, 0, i * 60, sp.getWidth());
   sp.getChildren().add(lines[i]);
}

问题是所有线都是在Gant Chart中间逐一添加的。基本上我认为问题是Java没有正确设置X(开始,结束),Y(开始,结束)值....

任何建议?

Gant chart nodes schema

1 个答案:

答案 0 :(得分:4)

为什么StackPane不起作用

StackPane是一个布局窗格,它根据内容的约束来定位它的内容,例如alignment constraint。 StackPane的默认对齐方式是将堆栈中的所有内容居中。布局窗格通常会忽略您为其中的布局内容提供的任何手动设置(因为它们自己管理布局)。

解决方案:使用组或窗格

您要做的是使用StackPane以外的容器,它不会自动布局内容位置。您可以使用的容器示例包括GroupPane

您可以将新父级包装在StackPane

如果您希望将父容器放在StackPane的可用布局区域(通常是使用StackPane的方式)中,您始终可以将其封装在StackPane中。