设置LineChart绘图区域宽度

时间:2014-10-23 22:27:47

标签: java javafx javafx-8 linechart

我正在尝试编写一个名为MultipleAxisLineChart的类。如其名称所示 - 它将是LineChart,它将具有多个轴(我假设所有其他轴将放置在Side.LEFTSide.RIGHT)。

给定侧的所有轴将由tickLabelGapProperty定位。 右轴应该由左侧轴的总和加上x-平移'宽度。

当我开始计算首选图表宽度的时候出现了问题(考虑到我先前的假设,图表绘制的区域大小相同,因此它们可以放在彼此的顶部)。属性LineChart#widthProperty返回整个LineChart对象的宽度(包括y轴和gap属性) - 所以这个肯定不是为所有LineChart s设置相同宽度的最佳候选者绘图区域(因为我必须为每个图表计算不同的宽度 - 请记住每个图表的tickLabelGap是不同的。)

我能够获得(甚至设置)轴宽(仅Axis#widthProperty),但不能获得LineChart绘图区域宽度。所以,我的问题是 - 有没有办法任意设置LineChart 绘图区域的宽度,以便不同图表中的所有区域具有相同的宽度?

更新

我正在尝试实现类似于HighCharts多个轴的效果: (C) Screen from HighCharts Demo website 我的尝试是使用StackPane并将所有图表添加为子项。我可以通过设置StackPane宽度来控制Chart的大小。

1 个答案:

答案 0 :(得分:1)

问题已经解决了。无需使用tickLabelGapProperty来定位LineChart。它只能破坏所有想法,因为它的转换被计算为组件宽度。

移动轴可以通过Axis#setTranslateX(double)完成。

回到MultipleAxisLineChart - 我创造了类似于我所呈现的东西。 Here你可以找到更多。