为什么我写这个程序无法对JTable中的数据进行有效的排序啊,我点击要进行排序的表头单元格,发现JTable中 的数据的顺序时改变了,但是没有对数据进行排序(升序或者降序),求高手指教import java.io.*;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;public class MyJTable extends JFrame{
    /*
    TableModel model = new DefaultTableModel(500, 10);
    JTable jt = new JTable(model);
    RowSorter sorter = new TableRowSorter(model);
     */
    //JTable jt;    DefaultTableModel m = new DefaultTableModel(500, 10);
    JTable jt = new JTable(m);
    final TableRowSorter sorter = new TableRowSorter(m);
    //jt.setRowSorter(sorter);
    JMenu jfile, jtool; // 菜单栏中的文件
    JMenuItem Save, Open, New, Avg, PeopleAvg, Max, Min, Pass, g69, g79, g89, g90; // 文件菜单选项中的保存和打开和新建
    FileWriter file;
    FileWriter test;
    int proNum;    public MyJTable() {        super("成绩管理系统");
        jt.setRowSorter(new TableRowSorter(m));
        //jt = new JTable(500, 10);
        jt.setPreferredScrollableViewportSize(new Dimension(600, 100));// 设置表格的大小
        jt.setRowHeight(30);// 设置每行的高度为20
        // jt.setRowHeight(0, 20);// 设置第1行的高度为15
        jt.setRowMargin(5);// 设置相邻两行单元格的距离
        jt.setRowSelectionAllowed(true);// 设置可否被选择.默认为false
        jt.setSelectionBackground(Color.white);// 设置所选择行的背景色
        jt.setSelectionForeground(Color.red);// 设置所选择行的前景色
        jt.setGridColor(Color.LIGHT_GRAY);// 设置网格线的颜色
        //jt.selectAll();// 选择所有行
        jt.setRowSelectionInterval(0, 2);// 设置初始的选择行,这里是1到3行都处于选择状态
        //jt.clearSelection();// 取消选择
        // jt.setDragEnabled(true);// 设置是否可拖到组件
        // jt.setShowGrid(false);// 是否显示网格线
        jt.setShowHorizontalLines(true);// 是否显示水平的网格线
        jt.setShowVerticalLines(true);// 是否显示垂直的网格线
        // jt.setValueAt("tt", 0, 0);// 设置某个单元格的值,这个值是一个对象
        jt.doLayout();
        jt.setBackground(Color.white);        JScrollPane jsp = new JScrollPane(jt);
        JPanel panel = new JPanel(new GridLayout(0, 1));
        panel.setPreferredSize(new Dimension(600, 400));
        panel.setBackground(Color.black);        panel.add(jsp);        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setContentPane(panel);        this.pack();
        this.setVisible(true);
        this.validate();        jfile = new JMenu("文件");
        jtool = new JMenu("工具");        New = new JMenuItem("新建");
        Save = new JMenuItem("保存");
        Open = new JMenuItem("打开");
        JMenuBar bar = new JMenuBar();
        bar.add(jfile);
        bar.add(jtool);        jfile.add(New);
        jfile.add(Save);
        jfile.add(Open);        panel.add(bar);
        this.setJMenuBar(bar);//新建一个成绩表
        New.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {
//将所有的表格单元中的数据清空,以便重新录入
                int i = 0, j = 0;
                while (j < 500) {
                    for (; i < 10; i++) {
                        jt.setValueAt(null, j, i);
                    }
                    j++;
                    i = 0;
                }
            }
        });        //保存录入的成绩表
        Save.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {
                JFileChooser fileChooser = new JFileChooser();
                int n = fileChooser.showSaveDialog(MyJTable.this);                if (n == JFileChooser.APPROVE_OPTION) {
                    File file = fileChooser.getSelectedFile();
                    try {
                        FileWriter tofile = new FileWriter(file);
                        BufferedWriter out = new BufferedWriter(tofile);                        for (int i = 0; i < 10; i++) {
                            for (int j = 0; j < 10; j++) {
                                if ((String) jt.getValueAt(i, j) == null) {
                                    out.write("" + "\r\n");
                                    proNum = i - 1;
                                    break; // 如果单元格为空,则跳出本层循环
                                } else {
                                    out.write((String) jt.getValueAt(i, j)
                                            + "\t"); // 否则将其添加到文件中
                                }
                            }
                        }                        out.flush();
                        out.close();
                    } catch (IOException ee) {
                    }
                }
            }
        });
        //打开已录入的成绩表
        Open.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                JFileChooser Chooser = new JFileChooser();
                int n = Chooser.showOpenDialog(null);                if (n == JFileChooser.APPROVE_OPTION) {                    File file = Chooser.getSelectedFile();                    try {
                        FileReader readfile = new FileReader(file);
                        BufferedReader in = new BufferedReader(readfile);                        String s = null;
                        String[] str;                        int i = 0, j = 0;
                        while ((s = in.readLine()) != null) {                            str = s.split("\t");
                            for (; i < str.length; i++) {
                                //System.out.print(str[i] + " ");
                                jt.setValueAt(str[i], j, i);
                            }                            j++;
                            i = 0;  //将i重置为0                        }
                    } catch (IOException ee) {
                    }
                }
            }
        });    }    public static void main(String[] ars) throws ClassNotFoundException,
            InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException {
        //加载windows系统的皮肤
        UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        new MyJTable();    }
}