JTable 和 AbstractTableModel 几个关键点

时间:2022-02-04 04:22:21

1    重写的方法

@Override
    public int getColumnCount() {
        // TODO Auto-generated method stub
        return this.columnNames.size();
    }

    @Override
    public String getColumnName(int column) {
        // TODO Auto-generated method stub
        return (String) this.columnNames.get(column);
    }

    @Override
    public int getRowCount() {
        // TODO Auto-generated method stub
        return this.rowData.size();
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        // TODO Auto-generated method stub
        return ((Vector)this.rowData.get(rowIndex)).get(columnIndex);
    }

2   JTable 中有更新数据模型的方法  setModel(新模型实例)

StuModel sm = new StuModel("select * from stu where name like '%"+s+"%'");
        jt.setModel(sm);

 

以下代码供参考

package stuMS;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

import javax.swing.*;

public class NewMs extends JFrame implements ActionListener{

    /**
     * @param args
     */
    JPanel jp1,jp2;
    JLabel jl1;
    JButton jb1,jb2,jb3,jb4;
    JTable jt;
    JScrollPane jsp;
    JTextField jtf;
    
    

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        NewMs nm  = new NewMs();
    }
    
    public NewMs(){
        jp1 = new JPanel();
        jtf = new JTextField(10);
        jb1= new JButton("查询");
        jb1.addActionListener(this);
        jl1 = new JLabel("输入名字");
        
        jp1.add(jl1);
        jp1.add(jtf);
        jp1.add(jb1);
        
        jp2 = new JPanel();
        jb2 = new JButton("tianjia");
        jb3 = new JButton("xiugai");
        jb4 = new JButton("shanchu");
        
        jp2.add(jb2);
        jp2.add(jb3);
        jp2.add(jb4);
        
        
        StuModel sm = new StuModel("select * from stu");
        
        jt = new JTable(sm);
        
        jsp = new JScrollPane(jt);
        
        this.add(jp1,BorderLayout.NORTH);
        this.add(jp2,BorderLayout.SOUTH);
        this.add(jsp,BorderLayout.CENTER);
        this.setSize(400,300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
        
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if(e.getSource()==jb1){
            System.out.println("i want query");
        }
        String s = jtf.getText().trim();
        StuModel sm = new StuModel("select * from stu where name like '%"+s+"%'");
        jt.setModel(sm);
    }

}

 

 

package stuMS;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

import javax.swing.*;
import javax.swing.table.AbstractTableModel;

public class StuModel extends AbstractTableModel{
    
    Vector rowData, columnNames;
    
    PreparedStatement  ps = null;
    Connection ct = null;
    ResultSet rs = null;
    
    public StuModel(String sql){
        columnNames = new Vector<String>();
        columnNames.add("ID");
        columnNames.add("name");
        columnNames.add("sex");
        columnNames.add("bornin");
        columnNames.add("major");
        
        rowData = new Vector<Vector<String>>();
    

        
        try {
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
            ct = DriverManager.getConnection("jdbc:microsoft:sqlserver://hzz:1433;databaseName=Heros","sa","13871955777");
            ps = ct.prepareStatement(sql);
            rs = ps.executeQuery();
            
            while(rs.next()){
                Vector hang = new Vector<String>();
                hang.add(rs.getInt(1));
                hang.add(rs.getString(2));
                hang.add(rs.getString(3));
                hang.add(rs.getString(4));
                hang.add(rs.getString(5));
                rowData.add(hang);
                
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
                try {
                    if(rs!=null)rs.close();
                    if(ps!=null) ps.close();
                    if(ct!=null) ct.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

        }
        
    }
    
//    public StuModel(){
//        String s = "select * from stu";
//        StuModel(s);
//        
//    }
    

    @Override
    public int getColumnCount() {
        // TODO Auto-generated method stub
        return this.columnNames.size();
    }

    @Override
    public String getColumnName(int column) {
        // TODO Auto-generated method stub
        return (String) this.columnNames.get(column);
    }

    @Override
    public int getRowCount() {
        // TODO Auto-generated method stub
        return this.rowData.size();
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        // TODO Auto-generated method stub
        return ((Vector)this.rowData.get(rowIndex)).get(columnIndex);
    }

}