好吧,你所有的专家外汇偷看那里。我需要一些帮助,在AreaChart的100刻度标记处添加一条黑线。JavaFX面积图100%线
你可以通过图片那里是100线我需要一个线跨片去告诉大家,无论他们是在100%的生产或看不到。 100的位置可以从任何给定的星期改变。有时最高价值不会是170,但可能是150左右。我目前的代码如下,但它只是测试了这一点(它也不能正常工作)。
@Override
protected void layoutPlotChildren() {
super.layoutPlotChildren();
ObservableList<Node> removeable = FXCollections.observableArrayList();
removeable.addAll(getPlotChildren().stream().filter(node -> node instanceof Line).collect(Collectors.toList()));
getPlotChildren().removeAll(removeable);
Double y = Double.valueOf(getYAxis().getValueForDisplay(100.0).toString());
System.out.println(y);
Line line = new Line();
line.setStartX(0.0);
line.setStartY(y);
line.setEndX(600.0);
line.setEndY(y);
getPlotChildren().add(line);
}
图表行并没有被放置在正确的垂直位置(我很清楚我的行没有走到最后,这只是一个测试)。
好奇,什么问题是在这里,究竟是什么
getYAxis().getValueForDisplay(100.0)
在做什么。
虽然通常会执行'double y = getYAxis()。getValueForDisplay(100.0)',它看起来应该可以工作,而不是转换为字符串,以便将其转换回double。您可以将示例扩展到[MCVE]吗? –
getYAxis()。getValueForDisplay(100.0)返回一个Y类型的FX对象.Y是你的Axis(在我的情况下它是一个NumberAxis)。没有任何转换将它转换为double(我总是看到),所以我将它转换为一个字符串(每当你打印Y时它打印一个看起来像双精度的数字),然后转换为double。关于这个例子,我们将看到我今天离开工作时能做些什么。 –
哦,我明白了。你想'getDisplayPosition'。您将像素坐标ls转换为轴值,而不是轴像素坐标。 –