java - 访问文件类型图标 Mac OSX

标签 java macos system icons

我正在尝试找到一种访问 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() 直到找到更好的解决方案。

最佳答案

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

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

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

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

关于java - 访问文件类型图标 Mac OSX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1144775/

相关文章:

java - 清除 JavaFX WebView 中的 session /缓存/cookie

linux - 有多操作系统蓝牙库吗?

c++ - 我可以暂停除一个线程之外的进程吗?

java - 尝试添加到保存我的观察者的 arrayList 时出现空指针错误

java - for 循环值或引用

macos - 如何获得端口的所有可用安装选项?

objective-c - 启动 Finder 窗口并选择特定文件

c++ - 在 C/C++ 程序中使用 Grep 进行模式匹配是否可取?

c - Linux/Unix 作为内核运行

java - Java JSON 解析中显示为问号的 Unicode 字符