JFileChooser を使用する場合、「詳細ビュー」ボタンがあります。ファイルごとに 5 つの情報が表示されます。アイコン、名前、サイズ、タイプ、および「更新日」。「Type」値を制御するクラスは何ですか? クラス「FileView」を使用して、アイコンと名前を制御できます。クラス「ファイル」を使用して、サイズと「更新日」を制御できます。タイプの説明は非常に優れており、他の場所で使用したいと考えています。また、「タイプ」の説明を付けたい「新しい」タイプもいくつかあります。
3 に答える
FileView>>getTypeDescription()
これはあなたが探しているものですか?
Javaで型情報をオーバーライドするために必要なことは、FileSystemViewの独自のサブクラスを使用してJFileChooserをインスタンス化することだと思います。
FileSystemViewをMyFileSystemViewにサブクラス化します
getSystemTypeDescription(File f)をオーバーライドします
特別なファイルタイプのオーバーライドでは、必要なものを返し、スーパーコールを使用して値を返すことでデフォルト値を返します。
次のプロトタイプのいずれかを使用してFileChoosersをインスタンス化し、カスタムMyFileSystemViewを2番目の引数として指定します
JFileChooser(File currentDirectory、FileSystemView fsv)
JFileChooser(String currentDirectoryPath、FileSystemView fsv)
import javax.swing.*;
import javax.swing.filechooser.*;
import java.io.*;
public class A {
public static void main(String[] args) {
File f = new File("f.jpg");
JFileChooser j = new JFileChooser();
System.out.println(j.getTypeDescription(f));
}
}
出力は私のシステムにあります:
F:>javac A.java
F:>Java A
IrfanView JPG ファイル
これは、私のシステムに IrfanView がインストールされているためです。JFileChooser/FileView>>getTypeDescription() は、システム (私の場合は Windows) にこの情報を照会します。「独自の説明を追加する」には、( camickrが言ったように) getTypeDescription() をオーバーライドするか、システムに追加することができます (Windows の場合は HKEY_CLASSES_ROOT の下のレジストリに)。