package com.zjkjl.bean;
import java.sql.*;
import com.zjkjl.DB.*;
import java.util.*;public class UserDao {

public Vector<User> getAllUser() {
Vector<User> v = new Vector<User>();
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
conn = ConnDB.getConnection();
String sql = "select * from TestUser";
pstmt = ConnDB.createPreparedStatement(conn, sql);
rs = ConnDB.getResultSet(pstmt);
try {
while(rs.next()) {
User u = new User();
u.setUserId(rs.getInt("UserId"));
u.setUserName(rs.getString("UserName"));
u.setUserAge(rs.getInt("UserAge"));
u.setUserSex(rs.getString("UserSex"));
v.add(u);
}
} catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
}

return v;
}

public Vector<String> getAllCol() {
Vector<String> v = new Vector<String>();
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
conn = ConnDB.getConnection();
String sql = "select * from TestUser";
pstmt = ConnDB.createPreparedStatement(conn, sql);
rs = ConnDB.getResultSet(pstmt);
ResultSetMetaData rsdm = null;
try {
rsdm = rs.getMetaData();
for(int i=1;i<=rsdm.getColumnCount();i++) {
v.add(rsdm.getColumnName(i));
}
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return v;
}
}package zjkjl.com;import java.awt.*;
import javax.swing.*;
import java.awt.Rectangle;
import javax.swing.table.JTableHeader;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import javax.swing.table.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;import com.zjkjl.bean.*;public class Frame1
    extends JFrame {
  JPanel contentPane;
  
  UserDao dao = new UserDao();
  //创建表头
  /*String[] title={"学号","姓名","年龄","性别"};
  String[][] data={{"1","张三","20","男"},{"2","李四","22","男"},{"3","王五","20","女"}};*/
  //首先创建表模版
  Vector<User> vdata = dao.getAllUser();
  Vector<String> vHeader = dao.getAllCol();
 
  JScrollPane jScrollPane1 = new JScrollPane();
  //通过表模版创建JTable
  JTable jTable1 = new JTable(vdata,vHeader){
    public boolean isCellEditable(int row,
                          int column){
      if(column==0)
        return false;
      else
        return true;
    }
  };
  JLabel jLabel1 = new JLabel();
  JTextField txtNum = new JTextField();
  JLabel jLabel2 = new JLabel();
  JTextField txtName = new JTextField();
  JLabel jLabel3 = new JLabel();
  JTextField txtAge = new JTextField();
  JLabel jLabel4 = new JLabel();
  JTextField txtSex = new JTextField();
  JButton jButton1 = new JButton();
  public Frame1() {
    try {
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      jbInit();
    }
    catch (Exception exception) {
      exception.printStackTrace();
    }
  }  /**
   * Component initialization.
   *
   * @throws java.lang.Exception
   */
  private void jbInit() throws Exception {
    contentPane = (JPanel) getContentPane();
    contentPane.setLayout(null);
    setSize(new Dimension(400, 515));
    setTitle("表格测试");
    jScrollPane1.setBounds(new Rectangle(74, 51, 242, 135));
    jLabel1.setText("学号:");
    jLabel1.setBounds(new Rectangle(75, 224, 73, 30));
    txtNum.setBounds(new Rectangle(155, 222, 160, 27));
    jLabel2.setText("姓名:");
    jLabel2.setBounds(new Rectangle(75, 272, 68, 30));
    txtName.setBounds(new Rectangle(154, 271, 161, 30));
    jLabel3.setText("年龄:");
    jLabel3.setBounds(new Rectangle(73, 321, 57, 28));
    txtAge.setBounds(new Rectangle(153, 317, 159, 28));
    jLabel4.setText("性别:");
    jLabel4.setBounds(new Rectangle(74, 369, 58, 26));
    txtSex.setBounds(new Rectangle(151, 364, 162, 32));
    jTable1.addMouseListener(new Frame1_jTable1_mouseAdapter(this));
    jButton1.setBounds(new Rectangle(64, 430, 112, 39));
    jButton1.setText("删除选中的行");
    jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this));
    contentPane.add(jScrollPane1);
    contentPane.add(txtNum);
    contentPane.add(jLabel1);
    contentPane.add(jLabel2);
    contentPane.add(txtName);
    contentPane.add(jLabel3);
    contentPane.add(txtAge);
    contentPane.add(txtSex);
    contentPane.add(jLabel4);
    contentPane.add(jButton1);
    jScrollPane1.getViewport().add(jTable1);
  }  public void jTable1_mouseClicked(MouseEvent e) {
    int row=jTable1.getSelectedRow();
    TableModel model=jTable1.getModel();
    if(row!=-1)
    {
      //获取选中的行,各单元格的值
      String id=model.getValueAt(row,0).toString();
      String name=model.getValueAt(row,1).toString();
      String age=model.getValueAt(row,2).toString();
      String sex=model.getValueAt(row,3).toString();
      //文本框赋值
      txtNum.setText(id);
      txtName.setText(name);
      txtAge.setText(age);
      txtSex.setText(sex);
    }
  }  public void jButton1_actionPerformed(ActionEvent e) {
    int row=jTable1.getSelectedRow();
    if(row!=-1)
    {
      ((DefaultTableModel)(jTable1.getModel())).removeRow(row);
      txtNum.setText("");
      txtName.setText("");
      txtAge.setText("");
      txtSex.setText("");    }
    else
      JOptionPane.showMessageDialog(this,"请选择要删除的行");
  }
}class Frame1_jButton1_actionAdapter
    implements ActionListener {
  private Frame1 adaptee;
  Frame1_jButton1_actionAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }  public void actionPerformed(ActionEvent e) {
    adaptee.jButton1_actionPerformed(e);
  }
}class Frame1_jTable1_mouseAdapter
    extends MouseAdapter {
  private Frame1 adaptee;
  Frame1_jTable1_mouseAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }  public void mouseClicked(MouseEvent e) {
    adaptee.jTable1_mouseClicked(e);
  }
}Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: com.zjkjl.bean.User
at javax.swing.table.DefaultTableModel.justifyRows(Unknown Source)
at javax.swing.table.DefaultTableModel.setDataVector(Unknown Source)
at javax.swing.table.DefaultTableModel.<init>(Unknown Source)
at zjkjl.com.Frame1$1.<init>(Frame1.java:28)
at zjkjl.com.Frame1.<init>(Frame1.java:28)
at zjkjl.com.Application1.<init>(Application1.java:15)
at zjkjl.com.Application1$1.run(Application1.java:54)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)老师要我重写某个方法 我还是没找到..为什么会出现异常? 求解决办法