gpt4 book ai didi

java - 如何在 JFileChooser 中显示文件的自定义图标?

转载 作者:行者123 更新时间:2023-11-30 04:18:54 25 4
gpt4 key购买 nike

如何在JFileChooser中显示文件的自定义图标?好吧,我既不想要文件的默认系统图标,也不想要 JFileChooser 附带的默认图标。我想要我自己的图标。

我想通过文件的扩展名设置文件的图标。我怎样才能做到这一点?

最佳答案

我们可以利用 Hashtable,其中包含 String 类型的扩展名和 ImageIcon

Hashtable 位于 java.util

FileView 位于 javax.swing.filechooser

// Create a hashtable for String,ImageIcon
Hashtable<String,ImageIcon> table=new Hashtable<>();

// Add extensions and icons
table.put(".txt",new ImageIcon("txtfile.png"));
table.put(".doc",new ImageIcon("docfile.png"));
table.put(".ppt",new ImageIcon("pptfile.png"));
table.put(".lnk",new ImageIcon("link.png"));
table.put(".png",new ImageIcon("image.png"));
table.put(".gif",new ImageIcon("image.png"));
table.put(".jpeg",new ImageIcon("image.png"));
table.put(".jpg",new ImageIcon("image.png"));

在类MyFileView

class MyFileView extends FileView
{
Hashtable<String,ImageIcon> table;
ImageIcon dirIcon;

public MyFileView(Hashtable<String,ImageIcon> table,ImageIcon dirIcon)
{
this.table=table;
this.dirIcon=dirIcon;
}

public Icon getIcon(File f)
{
// Do display custom icons

// If dir
if(f.isDirectory())
{
if(dirIcon!=null) return dirIcon;
return new ImageIcon("myfoldericon.png");
}

// Get the name
String name=f.getName();
int idx=name.lastIndexOf(".");

if(idx>-1)
{
String ext=name.substring(idx);
if(table.containsKey(ext))
return table.get(ext);
}

// For other files
return new ImageIcon("myownfileicon.png");
}
}

以及使用它的代码,

MyFileView m=new MyFileView(table,new ImageIcon("diricon.png"));
JFileChooser jf=new JFileChooser();
jf.setFileView(m);
jf.showOpenDialog(this);

如果我们不想通过扩展或如果我们想为硬盘驱动器、我的计算机设置自定义图标,那么我们可以使用 UI 默认值。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com