java高手快来啊!关于用JFileChooser保存文件的问题 谁帮帮我啊,急死啦!!!!!

java高手快来啊!关于用JFileChooser保存文件的问题 谁帮帮我啊,急死啦!!!!!
废话少说,大家先看我的代码。 以下是把JTable里的数据保存到Excel中

import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.FileWriter;
import java.util.*;
public class SimpleTable2{
/**
*
*/
public SimpleTable2(){
JFrame f=new JFrame();
Object[][] p={
{"阿呆",new Integer(66),new Integer(32),new Integer(98),new Boolean(false),new Boolean(false)},
{"阿呆",new Integer(82),new Integer(69),new Integer(128),new Boolean(true),new Boolean(false)},
};
String[] n={"姓名","语文","数学","总分","及格","作弊"};
TableColumn column=null;
JTable table=new JTable(p,n);
table.setPreferredScrollableViewportSize(new Dimension(550,30));
table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
for (int i=0;i<6;i++){
//利用JTable中的getColumnModel()方法取得TableColumnModel对象;再利用TableColumnModel界面所定义的getColumn()方法取
//TableColumn对象,利用此对象的setPreferredWidth()方法就可以控制字段的宽度.
column=table.getColumnModel().getColumn(i);
if ((i%2)==0)
column.setPreferredWidth(150);
else
column.setPreferredWidth(50);
}
JScrollPane scrollPane=new JScrollPane(table);
f.getContentPane().add(scrollPane,BorderLayout.CENTER);
f.setTitle("Simple Table");
f.pack();
f.show();
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});

JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
//FileNameExtensionFilter filter = new FileNameExtensionFilter();
// chooser.setFileFilter(filter);
// int returnVal =
chooser.showSaveDialog(null);
//if(returnVal == JFileChooser.APPROVE_OPTION) {
// System.out.println("You chose to open this file: " +
// chooser.getSelectedFile().getName());
// }
File fi=chooser.getSelectedFile();
String path=fi.getPath();

String a="导出文件.xls";
File file=new File(path+"/"+a);
try{
FileWriter out = new FileWriter(file);
for(int i=0; i < table.getColumnCount(); i++)
{
out.write(table.getColumnName(i) + "\t");
}
out.write("\n");
for(int i=0; i< table.getRowCount(); i++)
{
for(int j=0; j < table.getColumnCount(); j++)
{
out.write(table.getValueAt(i,j).toString()+"\t");
}
out.write("\n");
}
out.close();
JOptionPane.showMessageDialog(null,"文件导出成功");
Runtime.getRuntime().exec( "cmd /c start "+file.getPath()); }
//打开生成的excel文件
catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args){
new SimpleTable2();
}
}

我有以下几个问题:

一,如何自行设置文件保存名,并且按照自己填的名字保存文件

二,为什么java本身不能识别空格键, 比如我保存路径为 D:\My Documents 但是java本身只能识别到D:\My

三,保存之后打开为什么还说有错误

首先谢谢大家的帮忙啊,最好在源代码上改 自己写的代码有点乱,因为我是初手还请大家包涵。

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileWriter;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.filechooser.FileFilter;
import javax.swing.table.TableColumn;

public class SimpleTable2 {
/**
*
*/
public SimpleTable2() {
JFrame f = new JFrame();
Object[][] p = {
{ "阿呆", new Integer(66), new Integer(32), new Integer(98),
new Boolean(false), new Boolean(false) },
{ "阿呆", new Integer(82), new Integer(69), new Integer(128),
new Boolean(true), new Boolean(false) }, };
String[] n = { "姓名", "语文", "数学", "总分", "及格", "作弊" };
TableColumn column = null;
JTable table = new JTable(p, n);
table.setPreferredScrollableViewportSize(new Dimension(550, 30));
table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
for (int i = 0; i < 6; i++) {
// 利用JTable中的getColumnModel()方法取得TableColumnModel对象;
// 再利用TableColumnModel界面所定义的getColumn()方法取
// TableColumn对象,利用此对象的setPreferredWidth()方法就可以控制字段的宽度.
column = table.getColumnModel().getColumn(i);
if ((i % 2) == 0)
column.setPreferredWidth(150);
else
column.setPreferredWidth(50);
}
JScrollPane scrollPane = new JScrollPane(table);
f.getContentPane().add(scrollPane, BorderLayout.CENTER);
f.setTitle("Simple Table");
f.pack();
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});

JFileChooser chooser = new JFileChooser();
chooser.setAcceptAllFileFilterUsed(false);
chooser.setFileFilter(new FileFilter() {
public boolean accept(File f) {
return f.getName().endsWith(".xls");
}
public String getDescription() {
return "Excel";
}
});
// FileNameExtensionFilter filter = new FileNameExtensionFilter();
// chooser.setFileFilter(filter);
// int returnVal =
chooser.showSaveDialog(f);
// if(returnVal == JFileChooser.APPROVE_OPTION) {
// System.out.println("You chose to open this file: " +
// chooser.getSelectedFile().getName());
// }
File file = chooser.getSelectedFile();
try {
FileWriter out = new FileWriter(file);
for (int i = 0; i < table.getColumnCount(); i++) {
out.write(table.getColumnName(i) + "\t");
}
out.write("\n");
for (int i = 0; i < table.getRowCount(); i++) {
for (int j = 0; j < table.getColumnCount(); j++) {
out.write(table.getValueAt(i, j).toString() + "\t");
}
out.write("\n");
}
out.close();
JOptionPane.showMessageDialog(null, "文件导出成功");
Runtime.getRuntime().exec("cmd /c start " + file.getPath());
}
// 打开生成的excel文件
catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
new SimpleTable2();
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答

java高手快来啊!关于用JFileChooser保存文件的问题 谁帮帮我啊,急死...
\/\/ if(returnVal == JFileChooser.APPROVE_OPTION) { \/\/ System.out.println("You chose to open this file: " + \/\/ chooser.getSelectedFile().getName());\/\/ } File fi = chooser.getSelectedFile();String file = fi.getAbsolutePath()+".xls";System.out.println(file);try { FileW...

[急~]Java中使用JFileChooser异常~谢谢!!大神帮忙看下~
public class Test2 {public static void main(String[] args) {JFileChooser jfc=new JFileChooser("c:\\\\");jfc.setFileFilter(new javax.swing.filechooser.FileFilter() {@Overridepublic String getDescription() {return null;}@Overridepublic boolean accept(File f) {if(f.length()<1024000){ret...

JFileChooser 保存上次打开文件的路径
import java.util.Properties;public class FileChooser extends JFrame implements ActionListener{ private JButton open;private JFileChooser chooser;private String latestPath ;private Profile profile;public FileChooser() { profile = new Profile();\/\/每次运行程序时创建配置文件Profile对象 latestPath ...

JAVA中JFileChooer的问题
jfilechooser = new JFileChooser("c:");int val = jfilechooser.showOpenDialog(null);if(val == JFileChooser.APPROVE_OPTION) {//估计你是缺少这里 File f = jfilechooser.getSelectedFile();System.out.println(f.getAbsolutePath());} ...

JAVA GUI问题。如何触动按钮后弹出文件浏览器和文件名选择框,选择保存...
\/\/保存文件从这里入手,输出的是文件名 if(returnVal == JFileChooser.APPROVE_OPTION) { System.out.println("你打开的文件是: " + chooser.getSelectedFile().getName());} } public static void main(String[] args) { fileChooser();} } 建议你可以翻java API 。新童鞋的话一定要学会用...

【sos】高手进,帮忙翻译下java记事本中注册打开,保存监听程序的代码
JFileChooser fc=new JFileChooser();\/\/ 显示文件保存对话框,返回值为整型,可判断是否点击了保存按钮 int select=fc.showSaveDialog(frame);\/\/ 如果点击了保存按钮 if (select==JFileChooser.APPROVE_OPTION){ \/\/ 从文件对话框对象中获取将保存的文件对象 File file=fc.getSelectedFile();\/\/ 构造一个...

用JAVA中写记事本,如何实现保存和打开文件
\/\/保存和读取,I\/O流操作.我只写了方法 public void readFile()\/\/用于读取文件内容 { try { FileReader fr = new FileReader(file);BufferedReader br = new BufferedReader(fr);String str;while((str = br.readLine()) != null){ txtEdit.setText(txtEdit.getText()+str+"\\n");} br....

JAVA无法使用JFileChooser chooserFile = new JFileChooser();求解...
做系统还原很容易搞乱你的磁盘分区的,比如原来的D盘变成了现在的E盘,原来的E盘变成了现在的D盘。所以请确定你原来代码中的系统路径是否与现在一致?

java 中怎么通过文件选择器选择要保存文件的的目录,然后返回绝对路径...
import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import javax.swing.JButton;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JLabel;public class FileChooser extends JFrame implements ActionListener{ JButton open=null; ...

如何用Java实现另存为
JLabel l1 = new JLabel("原始文件");JTextField t1 = new JTextField(40);JButton b1 = new JButton("选择");JLabel l2 = new JLabel("保存目录");JTextField t2 = new JTextField(40);JButton b2 = new JButton("保存");JFileChooser j1 = new JFileChooser();JFileChooser j2 = new ...

相似回答