我的jTable 里面传的是2个 Vector集合  不用数据库 就是用集合框架怎么实现 我表中数据的排序谢谢!!!可能代码有点乱 麻烦高手 帮忙看看 谢谢!!!!import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.JTextField;
import java.awt.Rectangle;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JButton;
import java.util.Vector;
import javax.swing.event.TableModelListener;
import javax.swing.event.TableModelEvent;
import javax.swing.event.ListSelectionEvent;
import javax.swing.ListSelectionModel;
import java.util.Hashtable;
import java.util.Iterator;public class MyApplet1 extends Applet {
    boolean isStandalone = false;
    BorderLayout borderLayout1 = new BorderLayout();
    private JTextField stu_id = new JTextField();
    JTextField stu_name = new JTextField();
    JTextField stu_age = new JTextField();
    JLabel jLabel1 = new JLabel();
    JLabel jLabel2 = new JLabel();
    JLabel jLabel3 = new JLabel();
    JScrollPane jScrollPane1 = new JScrollPane();
    JTable jTable1 = null;
    JButton jButton1 = new JButton();
    JButton jButton2 = new JButton();
    JButton jButton3 = new JButton();
    JButton jButton4 = new JButton();
    JButton jButton5 = new JButton();
    JButton jButton6 = new JButton();
    JButton jButton7 = new JButton();    //Get a parameter value
    public String getParameter(String key, String def) {
        return isStandalone ? System.getProperty(key, def) :
                (getParameter(key) != null ? getParameter(key) : def);
    }    //Construct the applet
    public MyApplet1() {
    }    //Initialize the applet
    public void init() {
        try {
            jbInit();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }    Vector rows = new Vector();
    Vector col = new Vector();
     Vector row=null;
     Hashtable ht=null;
    //Component initialization
    private void jbInit() throws Exception {
        this.setLayout(null);        col.add("stu_id");
        col.add("stu_name");
        col.add("stu_age");
        jTable1 = new JTable(rows, col);
        stu_id.setBounds(new Rectangle(69, 31, 112, 28));
        stu_name.setBounds(new Rectangle(71, 100, 110, 27));
        stu_age.setBounds(new Rectangle(71, 161, 109, 29));
        jLabel1.setText("stu_id");
        jLabel1.setBounds(new Rectangle(6, 30, 54, 25));
        jLabel2.setText("stu_name");
        jLabel2.setBounds(new Rectangle(4, 96, 66, 30));
        jLabel3.setText("stu_age");
        jLabel3.setBounds(new Rectangle(6, 160, 55, 29));
        jScrollPane1.setBounds(new Rectangle(193, 17, 205, 236));
        jButton1.setBounds(new Rectangle(4, 224, 71, 30));
        jButton1.setText("添加");
        jButton1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                  row = new Vector();
                row.add(stu_id.getText());
                row.add(stu_name.getText());
                row.add(stu_age.getText());
//                System.out.println("" + stu_id.getText());
//                System.out.println("" + stu_name.getText());
                rows.add(row);
                jTable1 = new JTable(rows, col);
                jScrollPane1.getViewport().add(jTable1);
//                 jTable1.setRowHeight(jTable1.getRowHeight());
                  jTable1.addMouseListener(new  MouseAdapter(){
                 public void mouseClicked(MouseEvent e) {
              int row=jTable1.getSelectedRow();
              stu_id.setText((String)jTable1.getValueAt(row,0));
              stu_name.setText((String)jTable1.getValueAt(row,1));
              stu_age.setText((String)jTable1.getValueAt(row,2));       }
   });                jTable1.setRowHeight(jTable1.getRowHeight());
                stu_id.setText("");
                stu_name.setText("");
                stu_age.setText("");
            }
        });
        jButton2.setBounds(new Rectangle(84, 224, 65, 29));
        jButton2.setText("删除");
        jButton2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int i = jTable1.getSelectedRow();
                rows.remove(i);
                jTable1.setRowHeight(jTable1.getRowHeight());
            }
        });        jButton3.setBounds(new Rectangle(4, 267, 68, 29));
        jButton3.setText("修改");
        jButton3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                       int i = jTable1.getSelectedRow();
                       rows.remove(i);
                      row = new Vector();
//                       jTable1.setRowHeight(jTable1.getRowHeight());
                       row.add(stu_id.getText());
                       row.add(stu_name.getText());
                       row.add(stu_age.getText());
                       rows.add(row);
                       jTable1 = new JTable(rows, col);
                       jScrollPane1.getViewport().add(jTable1);
//                       jTable1.setRowHeight(jTable1.getRowHeight());
            }
        });
        jButton4.setBounds(new Rectangle(405, 16, 90, 30));
        jButton4.setText("id升序");
//        jButton4.addActionListener(new ActionListener(){
//            public void actionPerformed(ActionEvent e) {
//                System.out.println("111111111111");
//                Iterator it= rows.iterator();
//                while(it.hasNext()){
//                    System.out.println("22222222222");
//                      ht=(Hashtable)it.next();
//                      System.out.println("3333333333");
//                      ht.put(row.get(0),row);
//                      System.out.println("44444444444444444");
////                      System.out.println(""+ht.get(ht).toString());
//                }
//            }
//        });
        jButton5.setBounds(new Rectangle(409, 72, 86, 25));
        jButton5.setText("id降序");
        jButton6.setBounds(new Rectangle(410, 129, 86, 27));
        jButton6.setText("age升序");
        jButton7.setBounds(new Rectangle(411, 189, 86, 23));
        jButton7.setText("age降序");
        this.add(stu_id);
        this.add(stu_name);
        this.add(stu_age);
        this.add(jLabel1);
        this.add(jLabel2);
        this.add(jLabel3);
        this.add(jScrollPane1);
        this.add(jButton1);
        this.add(jButton2);
        this.add(jButton3);
        this.add(jButton4);
        this.add(jButton5);
        this.add(jButton6);
        this.add(jButton7);
        jScrollPane1.getViewport().add(jTable1);
    }    //Get Applet information
    public String getAppletInfo() {
        return "Applet Information";
    }    //Get parameter info
    public String[][] getParameterInfo() {
        return null;
    }}

解决方案 »

  1.   

    建议楼主看下  swingHack, 那里面有专门一节讲了关于JTable的排序
      

  2.   

    JDK1.6?
    自带了,点击列头排序
    ------------------------------
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
    import javax.swing.JTextField;
    import java.awt.Rectangle;
    import javax.swing.JLabel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JButton;
    import javax.swing.RowSorter;import java.util.Vector;
    import javax.swing.event.TableModelListener;
    import javax.swing.event.TableModelEvent;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.table.TableModel;
    import javax.swing.table.TableRowSorter;
    import javax.swing.ListSelectionModel;
    import java.util.Hashtable;
    import java.util.Iterator;public class MyApplet1 extends Applet {
        boolean isStandalone = false;    BorderLayout borderLayout1 = new BorderLayout();    private JTextField stu_id = new JTextField();    JTextField stu_name = new JTextField();    JTextField stu_age = new JTextField();    JLabel jLabel1 = new JLabel();    JLabel jLabel2 = new JLabel();    JLabel jLabel3 = new JLabel();    JScrollPane jScrollPane1 = new JScrollPane();    JTable jTable1 = null;    JButton jButton1 = new JButton();    JButton jButton2 = new JButton();    JButton jButton3 = new JButton();    JButton jButton4 = new JButton();    JButton jButton5 = new JButton();    JButton jButton6 = new JButton();    JButton jButton7 = new JButton();    // Get a parameter value
        public String getParameter(String key, String def) {
            return isStandalone ? System.getProperty(key, def) : (getParameter(key) != null
                ? getParameter(key)
                : def);
        }    // Construct the applet
        public MyApplet1() {
        }    // Initialize the applet
        public void init() {
            try {
                jbInit();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }    Vector rows = new Vector();    Vector col = new Vector();    Vector row = null;    Hashtable ht = null;    // Component initialization
        private void jbInit() throws Exception {
            this.setLayout(null);        col.add("stu_id");
            col.add("stu_name");
            col.add("stu_age");
            jTable1 = new JTable(rows, col);
            jTable1.setAutoCreateRowSorter(true);
    //        jTable1.setRowSorter(new TableRowSorter(jTable1.getModel()));
            stu_id.setBounds(new Rectangle(69, 31, 112, 28));
            stu_name.setBounds(new Rectangle(71, 100, 110, 27));
            stu_age.setBounds(new Rectangle(71, 161, 109, 29));
            jLabel1.setText("stu_id");
            jLabel1.setBounds(new Rectangle(6, 30, 54, 25));
            jLabel2.setText("stu_name");
            jLabel2.setBounds(new Rectangle(4, 96, 66, 30));
            jLabel3.setText("stu_age");
            jLabel3.setBounds(new Rectangle(6, 160, 55, 29));
            jScrollPane1.setBounds(new Rectangle(193, 17, 205, 236));
            jButton1.setBounds(new Rectangle(4, 224, 71, 30));
            jButton1.setText("添加");
            jButton1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    row = new Vector();
                    row.add(stu_id.getText());
                    row.add(stu_name.getText());
                    row.add(stu_age.getText());
                    // System.out.println("" + stu_id.getText());
                    // System.out.println("" + stu_name.getText());
                    rows.add(row);
                    jTable1 = new JTable(rows, col){
                        public void tableChanged(TableModelEvent e) {
                            super.tableChanged(e);
                            this.setRowSorter(new TableRowSorter(jTable1.getModel()));
                        }
                    };
                    jScrollPane1.getViewport().add(jTable1);
                    // jTable1.setRowHeight(jTable1.getRowHeight());
                    jTable1.addMouseListener(new MouseAdapter() {
                        public void mouseClicked(MouseEvent e) {
                            int row = jTable1.getSelectedRow();
                            stu_id.setText((String) jTable1.getValueAt(row, 0));
                            stu_name.setText((String) jTable1.getValueAt(row, 1));
                            stu_age.setText((String) jTable1.getValueAt(row, 2));                    }
                    });                jTable1.setRowHeight(jTable1.getRowHeight());
                    stu_id.setText("");
                    stu_name.setText("");
                    stu_age.setText("");
                }
            });
            jButton2.setBounds(new Rectangle(84, 224, 65, 29));
            jButton2.setText("删除");
            jButton2.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    int i = jTable1.getSelectedRow();
                    rows.remove(i);
                    jTable1.setRowHeight(jTable1.getRowHeight());
                }
            });        jButton3.setBounds(new Rectangle(4, 267, 68, 29));
            jButton3.setText("修改");
            jButton3.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    int i = jTable1.getSelectedRow();
                    rows.remove(i);
                    row = new Vector();
                    // jTable1.setRowHeight(jTable1.getRowHeight());
                    row.add(stu_id.getText());
                    row.add(stu_name.getText());
                    row.add(stu_age.getText());
                    rows.add(row);
                    jTable1 = new JTable(rows, col);
                    jScrollPane1.getViewport().add(jTable1);
                    // jTable1.setRowHeight(jTable1.getRowHeight());
                }
            });
            jButton4.setBounds(new Rectangle(405, 16, 90, 30));
            jButton4.setText("id升序");
            // jButton4.addActionListener(new ActionListener(){
            // public void actionPerformed(ActionEvent e) {
            // System.out.println("111111111111");
            // Iterator it= rows.iterator();
            // while(it.hasNext()){
            // System.out.println("22222222222");
            // ht=(Hashtable)it.next();
            // System.out.println("3333333333");
            // ht.put(row.get(0),row);
            // System.out.println("44444444444444444");
            // // System.out.println(""+ht.get(ht).toString());
            // }
            // }
            // });
            jButton5.setBounds(new Rectangle(409, 72, 86, 25));
            jButton5.setText("id降序");
            jButton6.setBounds(new Rectangle(410, 129, 86, 27));
            jButton6.setText("age升序");
            jButton7.setBounds(new Rectangle(411, 189, 86, 23));
            jButton7.setText("age降序");
            this.add(stu_id);
            this.add(stu_name);
            this.add(stu_age);
            this.add(jLabel1);
            this.add(jLabel2);
            this.add(jLabel3);
            this.add(jScrollPane1);
            this.add(jButton1);
            this.add(jButton2);
            this.add(jButton3);
            this.add(jButton4);
            this.add(jButton5);
            this.add(jButton6);
            this.add(jButton7);
            jScrollPane1.getViewport().add(jTable1);
        }    // Get Applet information
        public String getAppletInfo() {
            return "Applet Information";
        }    // Get parameter info
        public String[][] getParameterInfo() {
            return null;
        }}要想实现自己的排序方式,得自己写sorter
      

  3.   

            jButton4.setBounds(new Rectangle(405, 16, 90, 30)); 
            jButton4.setText("id升序"); 
    //        jButton4.addActionListener(new ActionListener(){ 
    //            public void actionPerformed(ActionEvent e) { 
    //                System.out.println("111111111111"); 
    //                Iterator it= rows.iterator(); 
    //                while(it.hasNext()){ 
    //                    
    //                } 
    //            } 
    //        });
     
         有人说在这里面定义个数组  在用冒泡排序  不知道这么弄啊。有那位高手知道吗?谢谢 !!!
      

  4.   

    恩 现在的方法自己写好了嘿嘿  
      public void paixv(String name, String type) {
            Object[] b = new Object[rows.size()];
            for (int i = 0; i < b.length; i++) {
                b[i] = (Vector) rows.get(i);
            }
            for (int i = 0; i < b.length; i++) {
                for (int u = 0; u < (b.length - 1) - i; u++) {
                    Vector v1 = (Vector) b[u];
                    Vector v2 = (Vector) b[u + 1];
                    int num1 = 0;
                    int num2 = 0;
                    if (name.equals("Stu_id")) {
                        num1 = Integer.parseInt((String) v1.get(0));
                        num2 = Integer.parseInt((String) v2.get(0));
                    } else {
                        num1 = Integer.parseInt((String) v1.get(2));
                        num2 = Integer.parseInt((String) v2.get(2));
                    }                if (type.equals("shenngxv")) {
                        if (num1 > num2) {
                            Object o1 = b[u];
                            b[u] = b[u + 1];
                            b[u + 1] = o1;
                        }
                    } else {
                        if (num1 < num2) {
                            Object o1 = b[u];
                            b[u] = b[u + 1];
                            b[u + 1] = o1;
                        }
                    }            }
            }        rows.removeAll(rows);
            for (int i = 0; i < b.length; i++) {
                rows.add(b[i]);
                jTable1.setRowHeight(jTable1.getRowHeight());
            }
        }
        总算做出来了嘿嘿   结贴了啊 !!!!