0

折れ線グラフの原点に対するマウスの位置を計算するにはどうすればよいですか?

以下のコードは、チャートのレイアウト原点に対するマウス カーソルの 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();
}
4

1 に答える 1

0

グラフの軸を使用して、表示座標とデカルト (値) 座標を変換する必要があります。xAxis.getDisplayPosition(0)たとえば、値 0 の x 座標が得られます。これを使用して、現在のマウス位置を「値」に変換することもできます。

于 2012-09-24T12:20:23.157 に答える