我正在尝试获取 LineChart<Number, Number>
上一个点的 x,y这样我就可以添加 Line
到它上面。因此,我尝试通过执行以下操作来获取 x 值 9:
Group root = new Group();
NumberAxis xAxis = new NumberAxis();
xAxis.setAutoRanging(false);
xAxis.setLowerBound(0);
xAxis.setUpperBound(9);
LineChart<Number, Number> lineChart = new LineChart<Number, Number>(xAxis, yAxis);
System.out.println(xAxis.getDisplayPosition(9)); // 0
root.getChildren().add(lineChart);
Scene scene = new Scene(root, 800, 800);
stage.setScene(scene);
stage.show();
在互联网上查找后,我发现了一个假设的解决方案
Node chartPlotArea = lineChart.lookup(".chart-plot-background");
double chartZeroX = chartPlotArea.getLayoutX();
System.out.println(xAxis.getDisplayPosition(9) + chartZeroX);
最终输出 0
,为什么会出现这种情况?如何获取 x,y 的显示位置,以便将其传递到 Line.setStartX(...)
/Line.setStartY(...)
?
最佳答案
如果它不重要 - 您不需要在此处以编程方式生成布局 channel ,您可以让 javaFX 计算它并在显示舞台后立即更新。
把你的逻辑移到 stage.show();
之后
你将得到正确的输出
stage.show();
System.out.println(xAxis.getDisplayPosition(9));
我得到:443.0
关于java - NumberAxis.getDisplayPosition(...) 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53733769/