java - 如何在 JFileChooser 中显示文件的默认系统图标?

标签 java swing jfilechooser

如何在 JFileChooser 中显示文件的默认系统图标?即 JFileChooser 中文件的图标应该与出现在桌面和资源管理器中的图标相同吗?

例如,NetBeans 图标在 JFileChooser 中的显示与在桌面上的显示不同!

如何做到这一点?

最佳答案

我们可以使用 FileSystemView 类并通过调用其中的 getFileSystemView() 静态方法获取它的对象,然后使用 getSystemIcon()方法接受一个 File 对象并返回它的图标。

FileSystemViewFileView 类存在于 javax.swing.filechooser 包中。 File 类在 java.io 包中。

注意:FileSystemView 不扩展FileView。因此,您不能在 jf.setFileView()

中使用 FileSystemView 对象
JFileChooser jf=new JFileChooser();
jf.setFileView(new MyFileView());
jf.showOpenDialog(this);

class MyFileView extends FileView
{
      public Icon getIcon(File f)
      {
      FileSystemView view=FileSystemView.getFileSystemView();
            return view.getSystemIcon(f);
      }
}

this 表示当前帧。假设编写这段代码的类是 JFrame

的子类

或者以一种简单的方式,

jf.setFileView(new FileView(){
            public Icon getIcon(File f)
            {
                return FileSystemView.getFileSystemView().getSystemIcon(f);
            }
        });

关于java - 如何在 JFileChooser 中显示文件的默认系统图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17630055/

相关文章:

java - JFilechooser 更改默认外观

java - 如何根据操作系统使用 JFileChooser 在 Java 中获取正确的路径

java - JFileChooser:防止用户以现有名称保存文件

java - 复杂的通用类声明

java - Java App 的加载问题 - 如何复制?

java - 无法加载没有绝对路径的图像

java - 为每个对象实例分配唯一编号

java - 如何将面板/框架保存到文件中然后读取它?

java - 使用可从资源中绘制的位图初始化位图变量不起作用 - 使用 ANDROID

java - 在 JOptionPane 中使用 HTML 标签