Как видно из заголовка, я заметил, что удаленно размещенные изображения, загруженные с использованием тегов <img>
внутри содержимого ячейки jTable, перезагружаются каждый раз, когда компонент перерисовывается.Содержимое ячейки будет выглядеть примерно так: <html><img src="http://www.example.com/image.png"></html>
Обычно это не является большой проблемой, хотя с достаточно большими изображениями и компонентами, которые перекрашиваются достаточно часто, они могут стать проблемой производительности приложения.(поскольку он будет зависать при повторной загрузке образа каждый раз, когда компонент перекрашивается), и, возможно, проблема спама / полосы пропускания для любого плохого файлового сервера, на котором размещается образ.
Можно ли убедить Swingзагрузить изображение только в первый раз, когда оно необходимо, а затем повторно использовать кэшированную копию при перерисовке вместо повторной загрузки его каждый раз?
И чтобы уточнить, как я заметил это поведение, было:
- Обратите внимание на резкое снижение производительности при быстрой перерисовке ячейки jTable во время визуализации большого изображения на ней.
- Размещение указанного файла образа на файловом сервере Netty и просмотрвывод консоли выглядит следующим образом: Страницы и страницы этого, и более появляютсябыстро, как компонент перекрашивается
Редактировать, добавив MCVE к вопросу:
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class Main {
public static void main(String[] argv) {
JFrame demoFrame = new JFrame("Table");
JTable jTable = new JTable();
demoFrame.getContentPane().add(new JScrollPane(jTable));
DefaultTableModel dtm = new DefaultTableModel(new Object[]{"cache test"}, 5);
jTable.setModel(dtm);
jTable.setValueAt("<html><img src=\"https://i.imgur.com/zfa0mEn.png\"></html>", 2, 0);
demoFrame.pack();
demoFrame.setVisible(true);
}
}
Было бы немного утомительно и излишне бросать вкакой-то файловый сервер, чтобы отслеживать запросы файлов здесь, так что я решил против этого.