用Vector和JTable来模拟DataGrid(Java图形编程 + Access数据库)

来源:互联网 发布:淘宝新品上架无线链接 编辑:程序博客网 时间:2024/06/18 14:27

 

package JiaNan;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.*;import java.util.*;import javax.swing.table.*;class QuerySystem extends JFrame{Vector vect=new Vector();String title[]={"num","name","birth","school"};// 继承AbstractTableModelAbstractTableModel tm=new AbstractTableModel(){public int getColumnCount(){return title.length;}public int getRowCount(){return vect.size();}public Object getValueAt(int row,int column){if(!vect.isEmpty())return ((Vector)vect.get(row)).get(column);elsereturn null;}public String getColumnName(int column){return title[column];}public void setValueAt(Object value,int row,int column){}public boolean isCellEditable(int row,int column){return false;}};JTable jt=new JTable(tm);JScrollPane jsp=new JScrollPane(jt);public QuerySystem()throws SQLException,ClassNotFoundException{Connection c=connect();Statement s=c.createStatement();String sql="select * from student";ResultSet r=s.executeQuery(sql);showResult(r);//设置table内的单行选定(JTable利用的是ListSelectionModel)jt.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //添加表格(选定行)的双击左键事件jt.addMouseListener(new MouseAdapter(){public void mouseClicked(MouseEvent e){if(e.getClickCount()==2){  //鼠标双击   //以下三句为:双击删除选定行 int row=jt.getSelectedRow();vect.removeElementAt(row);tm.fireTableStructureChanged();}}});this.getContentPane().add(jsp,BorderLayout.CENTER);}//连接数据库方法 返回类型为 Connectionpublic Connection connect()throws SQLException,ClassNotFoundException{String dburl="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=da/student.mdb"; //数据库字段为:文本,文本,日期,文本String user="";String password="";Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection c=DriverManager.getConnection(dburl,user,password);return c;}//以DataGrid 样式显示数据库中的查询结果public void showResult(ResultSet rs)throws SQLException{vect.removeAllElements();tm.fireTableStructureChanged();while(rs.next()){Vector rec_vector=new Vector();rec_vector.addElement(rs.getString(1));rec_vector.addElement(rs.getString(2));rec_vector.addElement(rs.getDate(3));rec_vector.addElement(rs.getString(4));vect.addElement(rec_vector);}tm.fireTableStructureChanged();}public static void main(String[]args)throws SQLException,ClassNotFoundException{QuerySystem fm=new QuerySystem();fm.setSize(600,400);fm.setTitle("");}}


 

原创粉丝点击