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

Swing中Jtable中排序这么做,帮调试一下我的程序。
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

public class Jtable extends JFrame implements ActionListener{

JPanel l1,l2,l3;
JTextField tf[]=new JTextField[6];
JTable table;
JButton add,px;
Vector vtitle,vall;
DefaultTableModel dm;
int m,n,sum;
public Jtable(){
super();
this.setSize(400, 400);
this.setDefaultCloseOperation(3);
l1=new JPanel();
l2=new JPanel();
l3=new JPanel();
for(int i=0;i<tf.length;i++)
{ tf[i]=new JTextField(10);
if(i%2==0){tf[i].setEnabled(false);}
}
tf[0].setText("姓名:");
tf[2].setText("数学:");
tf[4].setText("语文:");

vtitle=new Vector();
vtitle.add("姓名");
vtitle.add("数学");
vtitle.add("语文");
vtitle.add("总分");
vall=new Vector();
dm=new DefaultTableModel(vall,vtitle);
table=new JTable(dm);
l1.setLayout(new GridLayout(3,3));
for(int i=0;i<tf.length;i++)
l1.add(tf[i]);
add=new JButton("添加");
px=new JButton("排序");
l2.setLayout(new GridLayout(1,2));
l2.add(add);
l2.add(px);
this.getContentPane().add(l1,"North");
this.getContentPane().add(new JScrollPane(table),"Center");
this.getContentPane().add(l2,"South");
add.addActionListener(this);
px.addActionListener(this);
this.setVisible(true);

}

public void actionPerformed(ActionEvent e) {
if(e.getSource()==add){
String str1=tf[1].getText().trim();
String str3=tf[3].getText().trim();
String str5=tf[5].getText().trim();
m=Integer.parseInt(str3);
n=Integer.parseInt(str5);
sum=m+n;
String str=String.valueOf(sum);
Vector vline=new Vector();
vline.add(str1);
vline.add(str3);
vline.add(str5);
vline.add(str);

//vline.add(str);
dm.addRow(vline);
tf[1].setText(null);
tf[3].setText(null);
tf[5].setText(null);

}
if(e.getSource()==px){
int p,q;
p=table.getColumnCount();
q=table.getRowCount();
String st[][]=new String[q][p];
student stu[]=new student[q];
Vector vline1=new Vector();
System.out.println(p);
System.out.println(q);
for(int i=0;i<q;i++)
for(int j=0;j<4;j++)
{st[i][j]=(String) table.getValueAt(i, j);
//System.out.println(st[i][j]);
}
/*for(int i=0;i<q;i++)

{ System.out.println(st[i][0]);
System.out.println(st[i][1]);
System.out.println(st[i][2]);
System.out.println(st[i][3]);}*/

for(int i=0;i<q;i++)

{ student user=new student();
user.setName(st[i][0]);
user.setShu(Integer.parseInt(st[i][1]));
user.setYu(Integer.parseInt(st[i][2]));
user.setSum(Integer.parseInt(st[i][3]));
stu[i]=user;
}
  //for(int i=0;i<q;i++)

// { System.out.println(stu[i].getSum());
//System.out.println(st[i][1]);
//System.out.println(st[i][2]);
//System.out.println(st[i][3]);
//}

for(int i=0;i<q-1;i++)
{
for(int j=i+1;j<q;j++)
{student sss=new student();
if(stu[i].getSum()<stu[j].getSum()){sss=stu[i];stu[i]=stu[j];stu[j]=sss;}
}}
/*for(int iii=0;iii<q;iii++)

{ System.out.println(stu[iii].getSum());}*/