Я перечисляю имена файлов с их значками (например, те, что содержатся в проводнике Windows) в JTable
. Я знаю два способа получить значок, если у меня есть объект File
из локальной файловой системы:
javax.swing.filechooser.FileSystemView.getFileSystemView().getSystemIcon( file )
для значка 16x16 или для более крупного:
sun.awt.shell.ShellFolder.getShellFolder( file ).getIcon( true ) )
Поскольку мои файлы хранятся в базе данных, у меня нет объекта File
. Мое обходное решение - создать временный файл с определенным расширением имени файла, использовать один из двух вышеперечисленных методов и кешировать значок, чтобы отобразить его в CellRenderer.
Я искал решение без временных файлов и нашел два, которые мне не нравятся:
-
org.eclipse.swt.program.Program.findProgram(String extension).getImageData()
, но я не хочу использовать SWT -
org.jdesktop.jdic.icons.IconService
из инкубатора проекта JDIC. Последние изменения наIconService
- 6 лет назад, на JDIC 2 года назад, и я не могу найти загружаемую банку.
Есть ли другое решение?