【发布时间】:2011-03-07 14:59:18
【问题描述】:
使用 JFileChooser 时,有一个“详细信息视图”按钮。 每个文件显示 5 条信息。 图标、名称、大小、类型和“修改日期”。 什么类控制“类型”值? 使用“FileView”类,可以控制图标和名称。 使用“文件”类,可以控制大小和“修改日期”。 类型描述非常好,我想在其他地方使用它们,我也有一些“新”类型,我希望能够给出一个 “类型”描述到。
【问题讨论】:
标签: java swing jfilechooser
使用 JFileChooser 时,有一个“详细信息视图”按钮。 每个文件显示 5 条信息。 图标、名称、大小、类型和“修改日期”。 什么类控制“类型”值? 使用“FileView”类,可以控制图标和名称。 使用“文件”类,可以控制大小和“修改日期”。 类型描述非常好,我想在其他地方使用它们,我也有一些“新”类型,我希望能够给出一个 “类型”描述到。
【问题讨论】:
标签: java swing jfilechooser
FileView>>getTypeDescription()
这是你要找的吗?
【讨论】:
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 下)。
【讨论】:
IrfanView JPG File。正如我所说,它根据扩展名(例如“jpg”)在注册表(HKEY_CLASSES_ROOT)中查找此信息。
我认为在 Java 中覆盖类型信息所要做的就是用自己的 FileSystemView 子类实例化 JFileChooser。
子类 FileSystemView 到 MyFileSystemView
覆盖 getSystemTypeDescription(文件 f)
在您的特殊文件类型的覆盖中,返回您想要的任何内容,并通过使用超级调用返回值来返回默认值,否则
使用以下原型之一实例化您的 FileChoosers,将您的自定义 MyFileSystemView 作为第二个参数
JFileChooser(File currentDirectory, FileSystemView fsv)
JFileChooser(String currentDirectoryPath, FileSystemView fsv)
【讨论】: