0

我正在创建基于 JavaFx 节点的交互式甘特图。图片向我展示了概念。

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]);
}

问题是在甘特图的中间,所有的线都是一一添加的。基本上我认为问题在于Java没有正确设置 X (start, end) , Y (start, end) 值....

有什么建议吗?

甘特图节点架构

4

1 回答 1

4

为什么 StackPane 不起作用

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

解决方案:使用组或窗格

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

您可以将新父母包装在 StackPane

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

于 2013-08-27T08:42:41.700 回答