计划';Java中的可执行文件到图像

计划';Java中的可执行文件到图像,java,windows,swing,Java,Windows,Swing,我知道这似乎有点奇怪,但我有这个要求,我想知道这是否可行 我有一个JavaSwing应用程序,我选择了一个文件(程序),这个程序被添加到一个列表中。当列表完成时,我执行程序列表(这就像启动管理器) 我想做的是,抓取我选择的文件,并将其作为图像显示到我的UI中。对于pdf、doc、txt等常见文件,这很简单,我只为每种类型提供了一个通用图像。但假设我想执行regedit.exe或msconfig.exe,我希望能够抓取它的图标(下图) 有人知道如何做到这一点吗 谢谢看一看 它有点有限(因为您只能

我知道这似乎有点奇怪,但我有这个要求,我想知道这是否可行

我有一个JavaSwing应用程序,我选择了一个文件(程序),这个程序被添加到一个列表中。当列表完成时,我执行程序列表(这就像启动管理器)

我想做的是,抓取我选择的文件,并将其作为图像显示到我的UI中。对于pdf、doc、txt等常见文件,这很简单,我只为每种类型提供了一个通用图像。但假设我想执行regedit.exe或msconfig.exe,我希望能够抓取它的图标(下图)

有人知道如何做到这一点吗

谢谢

看一看

它有点有限(因为您只能得到一个大小),但它是内置的,不需要任何额外的库或JNA或JNI甚至

File f = new File(...);
Icon icon = FileSystemView.getFileSystemView().getSystemIcon(f);
看一看

它有点有限(因为您只能得到一个大小),但它是内置的,不需要任何额外的库或JNA或JNI甚至

File f = new File(...);
Icon icon = FileSystemView.getFileSystemView().getSystemIcon(f);

如果您想要本机图标,则需要JNI。Java没有用于获取不同大小的本机图标的默认API。以下是windows和linux的一些启动点:

如果您不需要确切的本机图标,可以获取文件的mimetype并自行设置图标:


如果您想要本机图标,您需要JNI。Java没有用于获取不同大小的本机图标的默认API。以下是windows和linux的一些启动点:

如果您不需要确切的本机图标,可以获取文件的mimetype并自行设置图标: