Как получить доступ к внешним переменным в обработчике события действия (кнопка javafx)? - PullRequest
2 голосов
/ 15 мая 2019

Я немного новичок в javafx. Я хочу сделать так, чтобы эта кнопка обновляла объект «GraphView», называемый «viewGraph», но я не знаю, как это правильно сделать, потому что не могу получить доступ к внешним переменным в событии setOnAction. Я также хотел бы сделать startVertice и endVertice вне класса события, но я не знаю, как это сделать.

Я думаю, что ответом было бы как-то передать переменные в использовании параметров, но я не знаю, как это сделать.

Я пытался что-то найти и попробовать случайный синтаксис, но я все еще не знаю, что делать. Это кажется простым, хотя.

WeightedGraph<Campus> graph = new WeightedGraph<>(vertices, edges);

        Label startCampus = new Label("Starting Campus: ");
        Label endCampus = new Label("    Ending Campus: ");
        TextField startText = new TextField();
        TextField endText = new TextField();
        Button displayShortestPathBtn = new Button("Display Shortest Path");

        HBox input = new HBox();
        input.getChildren().addAll(startCampus, startText, endCampus, endText, displayShortestPathBtn);
        input.setPadding(new Insets(25, 0, 0, 0));

        VBox vbox = new VBox();
        GraphView viewGraph = new GraphView(graph);
        vbox.getChildren().addAll(viewGraph, input);
        vbox.setPadding(new Insets(50, 50, 25, 50));


        displayShortestPathBtn.setOnAction((event) -> {
            int startVertice = Integer.parseInt(startText.getText());
            int endVertice = Integer.parseInt(endText.getText());

            WeightedGraph<Campus>.ShortestPathTree shortestPathGraph = graph.getShortestPath(startVertice);
            ArrayList<Integer> path = (ArrayList)shortestPathGraph.getPath(endVertice);

            /*
            What I want to do:

            viewGraph = new GraphView(graph, path);
            */
        });

        primaryStage.setTitle("Final Exam");
        primaryStage.setScene(new Scene(vbox));
        primaryStage.show();

Я просто хочу иметь возможность доступа к внешним переменным, но по идее, если это возможно, или если я правильно подхожу к проблеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...