пауза для диспетчера событий - PullRequest
1 голос
/ 09 декабря 2010

У меня есть (в основном) однопоточное приложение, которое по мере обновления обновляет компонент колебательной диаграммы (jfreechart).

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

есть ли способ сделать паузу так часто, чтобы поток обработки событий мог наверстать упущенное?

Мое первое желание было бы поставить фиктивную задачу через SwingUtilities.invokeAndWait ... это может быть так просто?

ура, стр.

Ответы [ 2 ]

2 голосов
/ 09 декабря 2010

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

Это зависит от того, что именно вы делаете. Ваша цель - как можно быстрее вычислить что-то и обновить графический интерфейс, или вы пытаетесь создать хороший графический интерфейс, демонстрирующий анализ данных?

Если это первое, то вы действительно не хотите блокировать ожидание обновления графического интерфейса - это просто замедлит ваши вычисления. В этом случае просто пропустите некоторые обновления и объедините их в менее частые, более крупные обновления.

Если это последнее, то invokeAndWait, вероятно, добьется цели.

1 голос
/ 09 декабря 2010

Один из подходов состоит в том, чтобы разделить частоты обновления: обновлять модель данных асинхронно и обновлять представление с более низкой регулируемой скоростью. Этот пример использует javax.swing.Timer для выполнения периодических обновлений, но фиксированное соотношение является альтернативой. В случае JFreeChart метод fireSeriesChanged() DynamicTimeSeriesCollection должен предоставить вам необходимый контроль.

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