Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Charts 相对于原点的鼠标位置_Charts_Javafx 2 - Fatal编程技术网

Charts 相对于原点的鼠标位置

Charts 相对于原点的鼠标位置,charts,javafx-2,Charts,Javafx 2,如何计算鼠标相对于折线图原点的位置 下面的代码获取鼠标光标相对于图表布局原点的x位置。我想知道鼠标相对于笛卡尔原点的位置 public class Chart extends Application { private NumberAxis xAxis; private NumberAxis yAxis; private LineChart<Number,Number> lineChart; private Label cursorPosition;

如何计算鼠标相对于折线图原点的位置

下面的代码获取鼠标光标相对于图表布局原点的x位置。我想知道鼠标相对于笛卡尔原点的位置

public class Chart extends Application {

    private NumberAxis xAxis;
    private NumberAxis yAxis;
    private LineChart<Number,Number> lineChart;
    private Label cursorPosition;
    private Label xAxisPosition;

    @Override
    public void start(Stage primaryStage) {
        VBox root = new VBox();

        xAxis = new NumberAxis("Date", 0.f, 100.f, 10.f);
        yAxis = new NumberAxis("Value", 0.f, 100.f, 10.f);
        lineChart = new LineChart<>(xAxis, yAxis);

    Series series = new Series();
    for (int ii = 1; ii <= 100; ii++) {
        series.getData().add(new Data(ii, Math.random()*20.));
    }
    lineChart.getData().add(series);

    lineChart.setOnMouseMoved(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            lineChart.setCursor(Cursor.CROSSHAIR);
            cursorPosition.setText(String.valueOf(event.getX()));
        }
    });

    lineChart.setOnMouseExited(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            lineChart.setCursor(Cursor.DEFAULT);
        }
    });

    cursorPosition = new Label();
    root.getChildren().addAll(lineChart, cursorPosition,);

    Scene scene = new Scene(root, 300, 250);
    primaryStage.setScene(scene);
    primaryStage.show();
}
公共类图表扩展应用程序{
私人号码xis xAxis;
私人号码xis yAxis;
私人线形图;
私有标签光标位置;
自有品牌定位;
@凌驾
公共无效开始(阶段primaryStage){
VBox root=新的VBox();
xAxis=新的数字axis(“日期”,0.f,100.f,10.f);
yAxis=新的数字axis(“值”,0.f,100.f,10.f);
线形图=新线形图(xAxis,yAxis);
系列=新系列();

对于(int ii=1;ii您必须使用图表的轴在显示坐标和笛卡尔(值)坐标之间进行转换。
xAxis.getDisplayPosition(0)
例如,将为您提供值0的x坐标。您还可以使用该坐标将当前鼠标位置转换为“值”。

感谢您建议使用xAxis.getDisplayPosition确定数据点相对于原点的像素位置。您知道如何获取原点本身的位置吗?