2009-07-17 4 views
1

Mac OSXのシステムアイコンにアクセスする方法を見つけようとしています。誰もがMac上のデフォルトの場所を知っていますか?または、Javaを使用してそれらを返す方法を知っていますか?ファイル形式のアイコンにアクセスするMac OSX

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); 

UPDATE:これらをインポートする明確な方法があるように表示されません。私はいくつかの一般的なMacアイコンをオンラインで見つけ出し、より良い解決策が見つかるまでMacでgetRecourceAsStream()を使用するだけで自分のアプリにバンドルしました。

+0

http://nadeausoftware.com/node/89は、このテーマに関するまともな情報をたくさん持っているが、あなたの問題を回避するには、への唯一のまともな方法のようですあなたの問題を処理してください。 –

答えて

0

私はFileSystemViewとその友達がファイルアイコンを取得する方法を提供すると思います。

+2

私が見たFileSystemViewは、一般的なファイルアイコンのみを返すことができます。 Macデスクトップ上のハードドライブアイコンやフォルダのようなアイコン。それはMP3、DOC、PPT、XLSなどの特定のファイルタイプをサポートしません。 –

+0

私はWinの男のようにそれを知らなかった。それは動作しないと確信していますか?ファイルアイコンを取得するためにJNAコールをOSに使用する弱いオプションもあります。 – akarnokd

2

それは遅いですが、誰かが(私のような)同じ問題を探しているかもしれません。

FileSystemViewトリックは、すべてのプラットフォームの16x16イメージでのみ機能します。 Macでは、動作させるためにデフォルトのAquaのルックアンドフィールを使用する必要があります。

Windowsの場合、ShellFolder.getShellFolder(file).getIcon(true)を使用して32x32アイコンを取得できます。

マックのために、あなたが来るQuaquaを使用することができますいくつかのObjective-Cの任意のファイル(16pxに、32、64、128、256、512)のためにあなたに必要な/利用できるアイコンのサイズを与えるJNI LIBS: http://www.randelshofer.ch/quaqua/javadoc/ch/randelshofer/quaqua/osx/OSXFile.html#getIcon%28java.io.File,%20int%29

2

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); 
関連する問題