javafx привязать dataProperty серии LineChart к ObservableCollection? - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть большая задача, которую нужно запустить в фоновом режиме. Задача создает коллекцию, и я рассчитываю построить значения на LineChart. Я мог легко сделать это раньше, не создавая задачу и не используя обычный HashMap, но это блокировало пользовательский интерфейс на время процесса сборки HashMap. Поэтому, чтобы исправить «блокировку пользовательского интерфейса», я создал работоспособную задачу, но теперь я не понимаю, как связать результат задачи с серией моей LineChart. Моя задача находится в классе StatsCalculator.

public class StatsCalculator extends Task<StatsCalculator> {

в этом классе, я использую метод run () для генерации сбора данных. Я сохраняю его в свойстве и настраиваю для него метод получения

  private ObservableMap<String, Double> singleLoopTiming;

  public ObservableMap<String, Double> getSingleLoopTiming() {
    return this.singleLoopTiming;
  }

И, наконец, у меня есть класс контроллера для моей страницы LineChart, на которой вызывается задача:

  public class StatsViewController implements Initializable {
  @FXML LineChart<String, Double> cLineChart;
  @FXML ProgressIndicator progress;

  public void updateChart() {
    cLineChart.getData().clear();
    Task<StatsCalculator> calculator = new StatsCalculator();
    progress.visibleProperty().bind(calculator.runningProperty());
    progress.progressProperty().bind(calculator.progressProperty());

    new Thread(new Runnable() {
      public void run() {
        calculator.run();
      }
    }).start();

    XYChart.Series<String, Double> seriesA = new XYChart.Series<>();
    seriesA.setName("Single Loop");

Мне как-то нужно привязать seriesA объект к методу getSingleLoopTiming() класса StatsCalculator, но я не могу понять, как это сделать.

Я предполагаю, что это примерно так: seriesA.dataProperty().bind(***singleLoopTimingProperty()***); но я не знаю, каким должен быть фактический параметр.

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