鼠标移动时的水平和垂直线

时间:2018-10-08 08:47:41

标签: javafx javafx-8

如何如链接所示在鼠标移动时实现水平和垂直虚线?

我正在考虑将其实现到我的图表中,但是在线上没有太多信息,只有一些使用LineBuilder(似乎已弃用)。

我正在使用JavaFX8。

任何人都可以给我看一个例子。 TIA

example image

1 个答案:

答案 0 :(得分:0)

我会尝试,但是它与您使用的任何图表都没有集成。

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方法重写中,则可以解决该问题。