在Swing中显示生成的文件列表中的文件图标,可以通过使用JFileChooser和FileView来实现。
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
fileChooser.setCurrentDirectory(new File("路径"));
fileChooser.setFileFilter(new FileNameExtensionFilter("文本文件", "txt"));
class CustomFileView extends FileView {
@Override
public Icon getIcon(File file) {
if (file.isDirectory()) {
return UIManager.getIcon("FileView.directoryIcon");
} else {
String fileName = file.getName();
String fileExtension = fileName.substring(fileName.lastIndexOf(".") + 1);
// 根据文件扩展名返回对应的图标
if (fileExtension.equalsIgnoreCase("txt")) {
return new ImageIcon("txt图标路径");
} else if (fileExtension.equalsIgnoreCase("doc")) {
return new ImageIcon("doc图标路径");
} else {
return UIManager.getIcon("FileView.fileIcon");
}
}
}
}
fileChooser.setFileView(new CustomFileView());
完整的示例代码如下:
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.filechooser.FileView;
import java.io.File;
public class FileListWithIcon {
public static void main(String[] args) {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
fileChooser.setCurrentDirectory(new File("路径"));
fileChooser.setFileFilter(new FileNameExtensionFilter("文本文件", "txt"));
fileChooser.setFileView(new CustomFileView());
int result = fileChooser.showOpenDialog(null);
if (result == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
System.out.println("Selected file: " + selectedFile.getAbsolutePath());
}
}
static class CustomFileView extends FileView {
@Override
public Icon getIcon(File file) {
if (file.isDirectory()) {
return UIManager.getIcon("FileView.directoryIcon");
} else {
String fileName = file.getName();
String fileExtension = fileName.substring(fileName.lastIndexOf(".") + 1);
// 根据文件扩展名返回对应的图标
if (fileExtension.equalsIgnoreCase("txt")) {
return new ImageIcon("txt图标路径");
} else if (fileExtension.equalsIgnoreCase("doc")) {
return new ImageIcon("doc图标路径");
} else {
return UIManager.getIcon("FileView.fileIcon");
}
}
}
}
}
请注意,示例中的"txt图标路径"和"doc图标路径"需要替换为实际的图标文件路径。另外,还可以根据需要添加更多的文件类型和对应的图标。
领取专属 10元无门槛券
手把手带您无忧上云