Enumero algunos nombres de archivo con sus iconos (como los que están en el Explorador de Windows) en un JTable
. Sé que las dos formas de obtener el icono si tengo un objeto File
desde el sistema de archivos local:¿Cómo obtener el ícono para una extensión de archivo o tipo de archivo sin crear un archivo temporal?
javax.swing.filechooser.FileSystemView.getFileSystemView().getSystemIcon(file)
un icono de 16x16 o para una más grande:
sun.awt.shell.ShellFolder.getShellFolder(file).getIcon(true))
Desde mis archivos se almacenan en una base de datos, no tengo el objeto File
. Mi solución consiste en crear un archivo temporal con la extensión de nombre de archivo específica, usar uno de los dos métodos anteriores y almacenar en caché el icono para mostrarlo en un CellRenderer.
buscaba una solución sin los ficheros temporales y encontraron dos que no me gusta, ya sea:
org.eclipse.swt.program.Program.findProgram(String extension).getImageData()
, pero no quiero utilizar SWTorg.jdesktop.jdic.icons.IconService
de la incubadora del proyecto JDIC . Los últimos cambios en elIconService
son hace 6 años, en JDIC hace 2 años y no puedo encontrar un archivo descargable.
¿Hay alguna otra solución?
he cambiado la etiqueta oscilación a la etiqueta SWT – mKorbel
¿Por qué? El cartel decía explícitamente que no querían usar SWT. –
Desde la búsqueda de la fuente FileSystemView usa ShellFolder internamente. ShellFolder no implementa getIcon. Pero hace Win32ShellFolder2 (enlace de la fuente disponible) http://javasourcecode.org/html/open-source/jdk/jdk-6u23/sun/awt/shell/Win32ShellFolder2.html – Stefan