gpt4 book ai didi

java - MouseEvent 的 X 和 Y 坐标对于 Java FX LineChart 不正确

转载 作者:行者123 更新时间:2023-11-30 09:11:25 25 4
gpt4 key购买 nike

为 JavaFX 折线图添加了鼠标处理程序,但坐标与 X 轴和 Y 轴的 NumberAxis 上的值不匹配。代码片段如下

NumberAxis yAxis = new NumberAxis();
NumberAxis xAxis = new NumberAxis();
LineChart<Number, Number> lineChart = new LineChart<Number, Number>(xAxis, yAxis);
lineChart.setOnMousePressed(mouseHandler);
lineChart.setOnMouseReleased(mouseHandler);
// Add some values to the chart and click the mouse

EventHandler<MouseEvent> mouseHandler = new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
System.out.println(xAxis.getValueForDisplay(mouseEvent.getX()) + " " + yAxis.getValueForDisplay(mouseEvent.getY()));
}
}

最佳答案

不是将mouseHandler 直接添加到您的lineChart,您必须添加以下行并将您的mouseHandler 分配给您的图表- lineChart

的绘图背景
Node chartBackground = lineChart.lookup(".chart-plot-background");

效果很好,请看下面的例子!

https://stackoverflow.com/a/16476292/1759128

编辑

chartBackground.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent mouseEvent) {
cursorCoords.setVisible(true);
System.out.println("Mouse Pressed at : " + xAxis.getValueForDisplay(mouseEvent.getX()) + " " +
yAxis.getValueForDisplay(mouseEvent.getY()));
}
});

chartBackground.setOnMouseReleased(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent mouseEvent) {
cursorCoords.setText(
String.format(
"(%.2f, %.2f)",
xAxis.getValueForDisplay(mouseEvent.getX()),
yAxis.getValueForDisplay(mouseEvent.getY())
)
);
System.out.println("Mouse Released at : " + xAxis.getValueForDisplay(mouseEvent.getX()) + " " +
yAxis.getValueForDisplay(mouseEvent.getY()));
}
});

关于java - MouseEvent 的 X 和 Y 坐标对于 Java FX LineChart 不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22096104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com