import java.io.File;import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;class FileTypeList {
String[] typeList = {"xlsm", "txt"};
String[] typeNameList = {"xlsm文件", "文本文件"};
}public class FileDialog {

public String creatFileDialog(int fileType, int flag) {//flag:0保存   1打开
FileTypeList fileTypeList = new FileTypeList();
int ret;

JFileChooser filechooser = new JFileChooser();
filechooser.setCurrentDirectory(new File("."));
filechooser.setAcceptAllFileFilterUsed(false);//是否显示所有文件
FileNameExtensionFilter filter = new FileNameExtensionFilter(fileTypeList.typeNameList[fileType], fileTypeList.typeList[fileType]);
filechooser.addChoosableFileFilter(filter);
if (flag == 0) {
System.out.println("a");
ret = filechooser.showSaveDialog(null);
System.out.println("b");
} else {
ret = filechooser.showOpenDialog(null);
}

if (ret == JFileChooser.APPROVE_OPTION) {
return filechooser.getSelectedFile().getAbsolutePath();
}

return null;
}
}import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;public class read {
public void read11() {
String lineContent;
String fileName = new FileDialog().creatFileDialog(1, 1);

if (fileName != null) {
File file = new File(fileName);
try {
InputStreamReader read = new InputStreamReader(
new FileInputStream(file), "gb2312");
BufferedReader in = new BufferedReader(read);
while ((lineContent = in.readLine()) != null) {

}
in.close();
read.close();
} catch (FileNotFoundException e1) {
System.out.println("File not found!");
} catch (IOException e) {
System.out.println("Reading file error");
}
}
}
}public class write {
public void wirteDataToFile() {
new FileDialog().creatFileDialog(0, 0);
}
}public class testMain { /**
 * @param args
 */
public static void main(String[] args) throws Throwable {
read r = new read();
r.read11();
write w = new write();
w.wirteDataToFile(); System.exit(0);
} }
多次运行程序时,有时会出现,打不开保存对话框的情况,是在eclipse1.6下运行的,求高手指点

解决方案 »

  1.   

    我试了十几次,没出现异常,jdk1.6.0_24,楼主试试debug,看卡在哪里了
      

  2.   

    唯一改动了String[] typeNameList = {"xlsm文件", "文本文件"};=>String[] typeNameList = {"xlsm Document", "Text Document"};但我想这个应该没关系
      

  3.   

    在filechooser.showSaveDialog(null);这句停住了,这个问题不是总出现,不知道什么原因,没有任何提示,就停住了
      

  4.   

    论坛有bug,你这帖子在你回复后居然没有在我参与的帖子页面里被升序,所以一直没看到。
      

  5.   

    找不出原因的话,可不可以先化简,仅保留维持两个showDialog的必要代码这种方法来查找
      

  6.   


    class FileTypeList {
    String[] typeList = {"xlsm", "txt"};
    String[] typeNameList = {"xlsm文件", "文本文件"};
    }public class FileDialog {

    public String creatFileDialog(int fileType, int flag) {//flag:0保存   1打开
    FileTypeList fileTypeList = new FileTypeList();
    int ret;

    JFileChooser filechooser = new JFileChooser();
    filechooser.setCurrentDirectory(new File("."));
    filechooser.setAcceptAllFileFilterUsed(false);//是否显示所有文件
    FileNameExtensionFilter filter = new FileNameExtensionFilter(fileTypeList.typeNameList[fileType], fileTypeList.typeList[fileType]);
    filechooser.addChoosableFileFilter(filter);
    if (flag == 0) {
    ret = filechooser.showSaveDialog(null);//在这句会停住
    } else {
    ret = filechooser.showOpenDialog(null);
    }

    if (ret == JFileChooser.APPROVE_OPTION) {
    return filechooser.getSelectedFile().getAbsolutePath();
    }

    return null;
    }

    public static void main(String[] args) throws Throwable {
    FileDialog fd = new FileDialog();
    fd.creatFileDialog(0, 0);
    fd.creatFileDialog(1, 1);
    }
    }一样的问题
      

  7.   

    JFileChooser一直有bug,很多win7系统不能正常使用。 你试试用FileDialog.