【问题标题】:Javafx polylineJavafx 折线
【发布时间】:2014-11-12 18:18:57
【问题描述】:

在我的 JavaFX 项目中,我必须使用 MouseEvent 绘制基本线,我选择使用折线来绘制,但它无法正常工作。找不到问题,这里是MouseEvent代码:

if (event.getButton() == MouseButton.SECONDARY) {
    Polyline line = new Polyline();
    main.getChildren().add(line);
    line.getPoints().add(event.getX());
    line.getPoints().add(event.getY());
    line.setScaleX(0);
    line.setScaleY(0);
    line.setStroke(Color.CORAL);
    line.setStrokeWidth(4);
} else if (event.getEventType() == MouseEvent.MOUSE_DRAGGED) {
    if (event.getButton() == MouseButton.SECONDARY) {
        Polyline line = new Polyline();
        for (Node s: main.getChildren()) {
            if (s instanceof Polyline) {
                line.getPoints().add(event.getX());
                line.getPoints().add(event.getY());
            }
        }
        main.getChildren().add(line);
    }
}

【问题讨论】:

  • 请描述您期望这段代码做什么,以及它在做什么与那不同。 (它似乎是在每次拖动时将点添加到某个容器中的所有折线。)它还可能有助于显示此事件处理程序附加到什么以及如何附加。
  • @James_D 这个代码应该画线而不是这些点。 EventHandler<MouseEvent> myHandler = new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) {

标签: javafx polyline


【解决方案1】:

它不能工作,因为每次调用鼠标事件时你都会创建一个新的 PolyLine 对象。您需要在开始时创建一条折线并将所有点添加到此折线中。使用您的代码,每个点都是一条新的折线。顺便提一句。我不确定单独添加 x 和 y 坐标是否效果好,请尝试使用:

line.getPoints().addAll(event.getX(),event.getY());

希望这会有所帮助:)

【讨论】:

    猜你喜欢
    • 2016-04-18
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    相关资源
    最近更新 更多