Я создаю и обновляю BufferedImage в фоновом потоке. Изображение затем нарисовано на JPanel, переориентировав метод рисования панелей, как показано.Обновление буферизованного изображения из фоновой темы
@Override
public void paint(Graphics g) {
g.drawImage(image, 0, 0, null);
}
Фоновая нить периодически обновляет изображение, а затем вызывает метод недействительности панелей.
Будет ли я сталкиваться с любыми проблемами с этим подходом? Будет ли чтение качающейся нити и фоновый поток, обновляющий изображение, вызвать какие-либо проблемы?
Благодаря
Бен
Это зависит, если вы рисуете (через AWT-поток) одновременно с обновлением изображения, тогда у вас есть проблемы. Синхронизация потоков. – Adrian
Как в сторону, «программы Swing должны переопределять' paintComponent() 'вместо переопределения' paint() '." - [Живопись в AWT и Swing: методы Paint] (http://java.sun.com/products/ JFC/TSC/статьи/живопись/index.html # обратных вызовов). – trashgod
1) В дополнение к тому, что упоминалось в trashgod, обратите внимание, что параметр 'null', переданный как последний аргумент' drawImage', является 'ImageObserver'. Поскольку 'JPanel реализует ImageObserver', это должно быть' g.drawImage (image, 0, 0, this); '. 2) Если вы не растягиваете изображение для заполнения этой панели или не добавляете другие компоненты сверху, я бы использовал 'JLabel', чтобы отобразить его. 3) Если растянуть изображение, но ** не ** накладывать компоненты, сделать в 'JComponent'. –