Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Анимация линейного графика JavaFX LineChart


Автор: timdeygun 28.11.2017, 20:54
Доброго времени суток, господа.

Используемые обозначения:
[x] - метка, где "x" - номер метки на фото.


Сабж:

Вопрос вот в чем: написал JavaFX Desktop для чтения географических координат из файла, их преобразования и построения траектории движения задуманного ЛА по входным данным + визуализация этой дичи. 
Все получилось, однако, дойдя до попытки анимировать линейный график, столкнулся с пока нерешаемой для меня проблемой. 

При работе метода [1] в цикле [2] я вижу исключение при работе программы [4]. 
Вопрос: Почему? Разве зеленым обведенная строка (метод очистки) не должна солвить эту проблему? 
(если метод [2] вынести за пределы цикла [2], то все замечательно работает, однако, без анимации построения графика).

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

user posted image


Автор: timdeygun 28.11.2017, 22:08
Всем, кто собирался ответить и и всем, кто не очень - спасибо. А так же форуму за существование. Проблему решил, полазив в древних глубинах англоязычных форумов.

Солюшн:

Вместо того, что бы каждый раз при изменении серии (в данном случае - в цикле) подключать серию к графику таки вот образом
Код

for (int i = 0; i < coords62lat.size(); i++)
{
    .................

    lineChart.getData().add(data);
}

что и вызвало исключение, так как я пытался одну и ту же серию привязать к графику, а тот , в свою очередь, пытался ее графически отобразить снова и снова, что и вызвало соответствующий Exception.

Достаточно было просто подключить серию данных
Код

XYChart.Series<Number, Number> data = new XYChart.Series<>();

 к графику с помощью методов
Код

lineChart.getData().add(data);

а за тем просто обновлять саму серию, добавляя или удаляя элементы:
Код

for (int i = 0; i < coords62lat.size(); i++)
{
    data.getData().add(new XYChart.Data<>(coords62lon.get(i), coords62lat.get(i)));
}


Как все-таки полезно владеть несколькими языками  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)