Горизонтальная и вертикальная линия при движении мыши - PullRequest
0 голосов
/ 08 октября 2018

Как реализовать горизонтальную и вертикальную пунктирную линию при перемещении мыши, как показано в ссылке?

Я подумываю о том, чтобы реализовать это на моем графике, но в Интернете не так много информации, за исключением нескольких случаев, использующих LineBuilder (что кажется устаревшим).

Я использую JavaFX 8.

Может кто-нибудь показать мне пример, пожалуйста.TIA

пример изображения

1 Ответ

0 голосов
/ 08 октября 2018

Я сделаю попытку, но она не интегрируется с используемой вами диаграммой.

public class CrossLine extends StackPane {
    private Line vertical;
    private Line horizontal;

    public CrossLine() {
        this.setAlignment(Pos.TOP_LEFT);
        vertical = new Line();
        horizontal = new Line();

        vertical.getStrokeDashArray().add(2d);
        horizontal.getStrokeDashArray().add(2d);

        vertical.setStartX(0);
        vertical.setStartY(0);
        vertical.setEndX(0);
        vertical.endYProperty().bind(this.heightProperty());

        horizontal.setStartX(0);
        horizontal.setStartY(0);
        horizontal.endXProperty().bind(this.widthProperty());
        horizontal.setEndY(0);

        getChildren().addAll(vertical, horizontal);

        this.addEventFilter(MouseEvent.MOUSE_MOVED, event -> {
            double x = event.getX();
            double y = event.getY();

            vertical.setTranslateX(x);
            horizontal.setTranslateY(y);
        });
    }
}

Использование:

StackPane container = new StackPane();
container.getChildren().addAll(chart, new CrossLine());

Вероятно, будет также некоторая задержка,возможно, можно решить, если событие можно переместить в какое-либо layout переопределение метода.

...