Мое приложение показывает RSS-записи в JEditorPane.Это работает не так уж и плохо, но я столкнулся с серьезной проблемой в последнее время при отображении GIF.Вот небольшой тестовый пример:
public class JEditorPaneTest
{
public static void main(String[] args)
{
JFrame dialog = new JFrame("JEditorPane test");
dialog.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = dialog.getContentPane();
c.setLayout(new BorderLayout());
JEditorPane editorPane = new JEditorPane();
editorPane.setEditorKit(new HTMLEditorKit());
editorPane.setText("<html><body><img src=\"http://feeds.feedburner.com/~ff/MacRumors-All?d=yIl2AUoC8zA\"></body></html>");
c.add(new JScrollPane(editorPane), BorderLayout.CENTER);
dialog.pack();
dialog.setVisible(true);
}
}
Мерцает неанимированный GIF, и загрузка процессора составляет до 300% (четырехъядерный компьютер) в Mac OS X или 50% в Windows 7. Эта проблема дажеболее серьезный, поскольку после удаления панели редактора загрузка ЦП все еще остается высокой.
Если посмотреть на некоторые профилирования, то кажется, что 50% времени использования ЦП приходится на поток диспетчера событий, а остальные 50%в sun.awt.image.ImageFetcher.run ().
Еще один интересный факт заключается в том, что это происходит также при встраивании html в JLabel.
(РЕДАКТИРОВАТЬ: 9 марта 2012 г.) Еще один интересный фактв том, что если файл сначала загружается локально (и к нему обращается file: // ...) или даже, будучи ресурсом, ничего не исправляет.Но если изображение отображается в ImageIcon в JLabel, мерцание и высокая загрузка ЦП отсутствуют.Почему-то мне действительно нужно использовать HTML-документ в JEditorPane для рендеринга некоторого базового форматирования HTML.
Я ищу общее решение, чтобы избежать цензуры изображений с feedburner.com, и эти gif-файлы с feedburner.comЕдинственный, который я нашел, но я хотел бы предотвратить ошибку со всеми другими изображениями, которые могут вести себя так же.
Большое спасибо.