java - NumberAxis.getDisplayPosition(...) 返回 0

标签 java javafx

我正在尝试获取 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/

相关文章:

java - 我应该如何从另一个spring项目中调用打包的spring项目?

java - 在 unix 控制台上使用 java 进行 pretty-print

java - 创建一个可观察的列表/集合

java - 如何重用 JavaFX GUI?我可以动态更改 Controller 吗?

JavaFX 导入图像和图形

java - 在不保留引用的情况下安全地启动线程?

java - 每个下级节点上的Reducer执行

java - 从 Assets 加载 Android 中的着色器 - 最后有额外的符号?

user-interface - 如何根据鼠标位置显示工具提示? - JavaFX

java - 在 JavaFX ScatterChart 中为数据系列设置八种以上颜色