Я немного новичок в 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();
Я просто хочу иметь возможность доступа к внешним переменным, но по идее, если это возможно, или если я правильно подхожу к проблеме.