Ломаная линия Javafx

В моем проекте JavaFX мне нужно нарисовать базовую линию с помощью MouseEvent, я решил сделать это с помощью Polyline, но он не работает должным образом. Не могу найти проблему, вот код 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);
    }
}

person HP121    schedule 12.11.2014    source источник
comment
Пожалуйста, опишите, что вы ожидаете от этого кода, и что он делает, что отличается от этого. (Кажется, при каждом перетаскивании точки добавляются ко всем полилиниям в каком-то контейнере.) Также может помочь показать, к чему и как привязан этот обработчик событий.   -  person James_D    schedule 12.11.2014
comment
@James_D Этот код должен рисовать линию вместо этих точек. EventHandler<MouseEvent> myHandler = new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) {   -  person HP121    schedule 15.11.2014


Ответы (1)


Это не может работать, потому что каждый раз, когда вызывается событие мыши, вы создаете новый объект PolyLine. Вам нужно создать одну полилинию в начале и добавить все свои точки к этой полилинии. С вашим кодом каждая точка представляет собой новую полилинию. Кстати. Я не уверен, что добавление отдельных координат x и y работает хорошо, попробуйте использовать:

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

Надеюсь это поможет :)

person Muten Roshi    schedule 03.02.2015