我正在基于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(开始,结束)值....
任何建议?
答案 0 :(得分:4)
为什么StackPane不起作用
StackPane是一个布局窗格,它根据内容的约束来定位它的内容,例如alignment constraint。 StackPane的默认对齐方式是将堆栈中的所有内容居中。布局窗格通常会忽略您为其中的布局内容提供的任何手动设置(因为它们自己管理布局)。
解决方案:使用组或窗格
您要做的是使用StackPane以外的容器,它不会自动布局内容位置。您可以使用的容器示例包括Group或Pane。
您可以将新父级包装在StackPane
中如果您希望将父容器放在StackPane的可用布局区域(通常是使用StackPane的方式)中,您始终可以将其封装在StackPane中。