鼠标移动时的水平线和垂直线
Horizontal and vertical line on mouse move
如何实现link中鼠标移动时的水平和垂直虚线?
我正在考虑将其应用到我的图表中,但除了一些使用 LineBuilder(似乎已弃用)的信息外,网上没有太多信息。
我正在使用 JavaFX 8。
谁能给我举个例子。 TIA
example image
我会尝试,但它没有与您使用的任何图表集成。
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
方法覆盖中,则可能会解决。
如何实现link中鼠标移动时的水平和垂直虚线?
我正在考虑将其应用到我的图表中,但除了一些使用 LineBuilder(似乎已弃用)的信息外,网上没有太多信息。
我正在使用 JavaFX 8。
谁能给我举个例子。 TIA
example image
我会尝试,但它没有与您使用的任何图表集成。
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
方法覆盖中,则可能会解决。