gpt4 book ai didi

java - 如何在不创建临时文件的情况下获取文件扩展名或文件类型的图标?

转载 作者:IT老高 更新时间:2023-10-28 21:13:15 26 4
gpt4 key购买 nike

我在 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。

还有其他解决方案吗?

最佳答案

Looks就像您已经发现了这样做的方法一样,除非您想深入了解 native 库等。

FileSystemView使用 Win32ShellFolder在内部,所以它们基本相同。

我还挖掘了 org.eclipse.swt.program.Program 的来源和它org.eclipse.swt.internal.win32.OS .然后,OS 类对 Icon 使用 native 调用。在这一点上,除非你真的不能创建一个临时文件,否则我不会走这条路。

对于 JDIC,我只找到了 http://kickjava.com/src/org/jdesktop/jdic/tray/internal/impl/WinTrayIconService.java.htm稍加挖掘(可能不相关,但会做一些标志性的事情:D)。也称为原生。

关于java - 如何在不创建临时文件的情况下获取文件扩展名或文件类型的图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8521294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com