【发布时间】:2011-12-15 14:01:58
【问题描述】:
我在JTable 中列出了一些文件名及其图标(如 Windows 资源管理器中的图标)。如果我有来自本地文件系统的 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 年前,我找不到可下载的 jar。
还有其他解决方案吗?
【问题讨论】:
-
我把 Swing 标签改成了 SWT 标签
-
为什么?发帖人明确表示他们不想使用 SWT。
-
我将标签改回 SWING。引用自己的话:“……但我不想使用 SWT”
-
@kleopatra ..但至于 sun.* 类的层次结构。 (不寒而栗)即使在应用程序中也不使用它们也有很好的理由。没有安全管理员。
-
Shell 图标处理程序被允许查看文件,以便他们可以例如生成图像的缩略图以用作图标。如果没有通用的方法来为没有文件执行此操作,我会感到惊讶,例如正如他们在“打开方式”菜单中使用的那样,但它可能归结为自己解析注册表项并忽略已注册的 COM 处理程序。
标签: java file swing icons desktop