日期:2014-05-20  浏览次数:21236 次

调用JFileChooser的showOpenDialog再调用showSaveDialog就没反应了

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下运行的,求高手指点

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


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