2

我正在尝试找到一种访问 Mac OSX 系统图标的方法。有谁知道他们在 Mac 上的默认位置?或者知道使用 Java 让它们返回的方法吗?

有一种方法可以使用 Mac 的 JFileChooser 来检索文件的图标,但文件必须存在于文件系统中(在我的应用程序中,文件可能从服务器流式传输,因此无法在系统上创建虚拟文件该扩展名将不起作用)。

我可以使用 SWT 通过以下方式在 Windows 上访问它们(但这在 Mac 上会爆炸)。例如下面的变量“fileType”是“.txt”、“.bmp”、“.doc”等:

Program p;
Image image;

//find the correct OS image for the file type and set
//the image to the tree item
p = Program.findProgram(fileType);
ImageData data = p.getImageData();
image = new Image(display, data);

更新:似乎没有明确的方法来导入这些。我最终在网上找到了一些通用的 Mac 图标并将它们与我的应用程序捆绑在一起,以便在 Mac 上简单地使用 getRecourceAsStream() 直到找到更好的解决方案。

4

3 回答 3

4

已经很晚了,但也许其他人会寻找同样的问题(比如我)。

FileSystemView 技巧仅适用于所有平台上的 16x16 图像。在 Mac 上,您需要使用默认的 Aqua 外观才能使其正常工作。

对于 Windows,您可以使用 ShellFolder.getShellFolder(file).getIcon(true) 获取 32x32 图标。

对于 Mac,您可以使用带有一些 Objective-C jni 库的 Quaqua,它为您提供任何文件的所需/可用图标大小(16px、32、64、128、256、512): http://www.randelshofer。 ch/quaqua/javadoc/ch/randelshofer/quaqua/osx/OSXFile.html#getIcon%28java.io.File,%20int%29

于 2010-04-20T16:14:10.533 回答
3

在 OS X 上,FileViewFileSystemView好得多。我正在使用以下内容获取文件的图标:

final JFileChooser fc = new JFileChooser();
//return fc.getFileView().getIcon(f); // will throw a  null pointer
Icon result = fc.getUI().getFileView(fc).getIcon(f);
于 2012-12-31T12:12:26.337 回答
0

我认为FileSystemView及其朋友提供了获取文件图标的方法。

于 2009-07-17T19:20:01.367 回答