Я работал над проблемой JavaFX. У меня есть простая программа, состоящая из основной сцены, которая изменяет подцены на основе TreeView. Одна из подсцен включает в себя линейную диаграмму. Мое намерение состоит в том, чтобы после запуска программы она выполняла некоторые вычисления в фоновом режиме и передавала XYChart.Series в линейную диаграмму. Однако мне не удается отобразить данные на графике. Код выглядит следующим образом:
Моя функция запуска (main пуста, кроме launch (args)):
public void start(Stage primaryStage) throws Exception{
//Create main Scene
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("/PrimaryStage.fxml"));
Parent root = loader.load();
primaryStage.setTitle("Radial Turbine Design Suite");
primaryStage.setScene(new Scene(root, 1280, 720));
primaryStage.show();
//Run calculations and create XYChart.Series
PrelimSizingTurbine run1 = new PrelimSizingTurbine();
run1.prelimSizingTurbine();
XYChart.Series<Double, Double> prelimDataSeriesHub = run1.createSeries(run1.rotorHubContour, "Rotor Hub");
//Access the SubScene with the LineChart and plot the series
FXMLLoader newLoader = new FXMLLoader();
newLoader.setLocation(getClass().getResource("/PreliminaryTurbineSizing_Geometry.fxml"));
Parent root2 = newLoader.load();
PreliminaryTurbineSizing_GeometryController controller = newLoader.getController();
controller.preliminaryTurbineGeometry.getData().add(prelimDataSeriesHub);
}
Метод createSeries:
public XYChart.Series<Double, Double> createSeries(Double[][] coords, String seriesName){
XYChart.Series<Double, Double> series = new XYChart.Series<>();
series.setName(seriesName);
for(int i = 0; i < coords.length; i++){
series.getData().add(new XYChart.Data(coords[i][0], coords[i][1]));
}
return series;
}
ТогдаКонтроллер подцены с LineChart:
public class PreliminaryTurbineSizing_GeometryController implements Initializable {
@FXML
public LineChart<Double, Double> preliminaryTurbineGeometry;
@FXML
public NumberAxis xAxis;
@FXML
public NumberAxis yAxis;
@FXML
AnchorPane PreliminaryTurbineSizing_Geometry;
@Override
public void initialize(URL location, ResourceBundle resources){
}
}
Интересно, похоже, я могу получить доступ к соответствующему контроллеру. Я попытался напечатать строку с того же контроллера, что и LineChart, и он работал нормально. Однако весь код, связанный с LineChart, похоже, игнорируется и не отображается на графике.