JFileChooser 保存文件时根据选择的文件类型改变文件后缀名

CTea321 2008-11-15 10:25:26
文件类型有几种,如“.txt”".sav" ".doc"等
选择哪种类型就在文件名框中的文件名后面自动添加这种类型的后缀
如选择的事“.sav” ,则文件名后缀就是“.sav”
...全文
489 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
oracle_lover 2008-11-16
  • 打赏
  • 举报
回复
难道 JTable 的表头不是默认居中显示的吗
CTea321 2008-11-16
  • 打赏
  • 举报
回复
谢谢哈
我再问个问题,JTable中这么让表头居中显示?
oracle_lover 2008-11-16
  • 打赏
  • 举报
回复
第一、定义一个自己的文件扩展名过滤器 MyFileFilter:

import java.io.File;
import javax.swing.filechooser.FileFilter;

public class MyFileFilter extends FileFilter {

String ends; // 文件后缀
String description; // 文件描述文字

public MyFileFilter(String ends, String description) { // 构造函数
this.ends = ends; // 设置文件后缀
this.description = description; // 设置文件描述文字
}

@Override
// 只显示符合扩展名的文件,目录全部显示
public boolean accept(File file) {
if (file.isDirectory()) return true;
String fileName = file.getName();
if (fileName.toUpperCase().endsWith(this.ends.toUpperCase())) return true;
return false;
}

@Override
// 返回这个扩展名过滤器的描述
public String getDescription() {
return this.description;
}

// 返回这个扩展名过滤器的扩展名
public String getEnds() {
return this.ends;
}
}

第二、为保存文件对话框添加自定义的扩展名过滤器:

txtFilter = new MyFileFilter(".txt", "txt 文件 (*.txt)");
savFilter = new MyFileFilter(".sav", "sav 文件 (*.sav)");
docFilter = new MyFileFilter(".doc", "doc 文件 (*.doc)");
fileChooser.addChoosableFileFilter(txtFilter);
fileChooser.addChoosableFileFilter(savFilter);
fileChooser.addChoosableFileFilter(docFilter);

第三、在保存文件对话框返回文件名时,同时取得被选中的扩展名:

int fresult;
fresult = fileChooser.showSaveDialog(this);
if (fresult == JFileChooser.APPROVE_OPTION) { // 用户点击了“确定”按钮
File file = fileChooser.getSelectedFile(); //获得文件名
// 获得被选中的过滤器
MyFileFilter filter = (MyFileFilter)fileChooser.getFileFilter();
// 获得过滤器的扩展名
String ends = filter.getEnds();
File newFile = null;
if (file.getAbsolutePath().toUpperCase().endsWith(ends.toUpperCase())) {
// 如果文件是以选定扩展名结束的,则使用原名
newFile = file;
} else {
// 否则加上选定的扩展名
newFile = new File(file.getAbsolutePath() + ends);
}
// 以下用 newFile 完成保存文件的操作
}
oracle_lover 2008-11-16
  • 打赏
  • 举报
回复
我用的 JDK 6,默认表头居中

如果不是默认居中,参看下面的文章:
http://www.javadby.com/AppletyuSwing/20071102/2175_2.html
CTea321 2008-11-16
  • 打赏
  • 举报
回复
不是呀
是居左显示的

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧