Я пытаюсь создать приложение с использованием инфраструктуры javafx и mvvmfx для вычисления и отображения Проблема CVRP , но когда я добавляю прослушиватель событий в круг, он никогда не запускается.
scope.subscribe("STOP_LOADED", (key, payload) -> {
stepList.clear();
stopList.clear();
Stop depot = CVRPGraph.getDepot();
stopList.add(new Circle(toUiUnit(depot.getX()), toUiUnit(depot.getY()), 3, Color.BLACK));
stopList.addAll(CVRPGraph.getClientList().stream()
.map(stop -> {
Circle circle = new Circle(toUiUnit(stop.getX()), toUiUnit(stop.getY()), 3, Color.RED);
circle.setOnMouseClicked(mouseEvent -> System.out.println(mouseEvent.getEventType().getName()));
return circle;
})
.collect(Collectors.toList()));
});
stopList инициализируется следующим образом
private final ObservableList<Circle> stopList = FXCollections.observableArrayList();
, который я полностью заполняю в модели представления, и в представлении наблюдаю изменение, подобное этому
graphViewModel.stopList().addListener((ListChangeListener<? super Circle>) change -> {
stopGroup.getChildren().clear();
stopGroup.getChildren().addAll(change.getList());
});
, где stopGroup - javafx.scene.Group
@FXML
private Group stopGroup;
Круг отображается, но когда я нажимаю на него, ничего не печатается
Скриншот программы Что я делаю не так?
PS Можно найти весь код здесь https://github.com/ptourneur/CapacitatedVehicleRoutingProblem но не стесняйтесь, если вам нужна дополнительная информация, спасибо