好吧,你所有的專家外匯偷看那裏。我需要一些幫助,在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轉換爲軸值,而不是軸像素座標。 –