Создание изображения в Java с помощью Component.createImage (ImageProducer) и пользовательского ImageProducer. - PullRequest
2 голосов
/ 08 ноября 2011

Я работаю над фрактальной программой на Java.В моем проекте я хотел бы реализовать определенный класс ImageProducer, который вычисляет пиксели в фоновом рабочем потоке, когда вызывается startProduction(ImageConsumer).После настройки производителя изображение будет создано с Component.createImage(ImageProducer), а затем показано с вызовом Graphics.drawImage(Image, int, int, ImageObserver) в методе paintComponent(Graphics) соответствующего подкласса JPanel, передавая this (JPanel) в качестве последнего параметра.

Здесь вопрос: безопасно ли вызывать методы установки для зарегистрированных ImageConsumers из рабочего потока?Разве эти вызовы не должны поступать из EDT, чтобы JPanel был правильно нарисован?

1 Ответ

2 голосов
/ 08 ноября 2011

В общем, вы должны синхронизировать доступ к любым данным, совместно используемым двумя или более потоками. Эта статья обсуждает некоторые подходы и компромиссы. Кроме того, вы можете получить некоторые идеи для анимации таблицы цветов из этого примера . Наконец, проект Benojt является богатым источником изучения этой темы.

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