Câu hỏi

25/05/2013 20:30
Lập trình ứng dụng bằng Java, đã kết nối được csdl để lấy ra các trường nhưng không biết cách đưa các trường đó vào một JTable để hiển thị??
Bạn nào biết cho mình hướng dẫn đc không?
chicken
25/05/2013 20:30
Danh sách câu trả lời (1)

Muốn hiển thị dữ liệu lên đối tượng JTable, bạn cần biết các phương thức chức năng của đối tượng này. JTable là đối tượng cho phép hiển thị/xử lý dữ liệu ở dạng bảng 2 chiều gồm nhiều hàng, mỗi hàng nhiều cột, tuy nhiên JTable không chứa dữ liệu trực tiếp, nó chỉ chứa đối tượng TableModel và đối tượng TableModel chứa dữ liệu hiển thị. Phương thức để thêm 1 hàng dữ liệu vào TableModel là addrow(). Cụ thể đoạn code Java sau đây cho phép hiển thị các record dữ liệu của 1 table TestDB trong file Access:
...
//import các class cần dùng
import javax.swing.table.DefaultTableModel;
import java.util.Vector;
import javax.swing.JScrollPane;
import java.sql.*;
...
public class TestDBDlg extends JFrame {
...
//hàm truy xuất và hiển thị các record lên JTable
public void jbtnStart_actionPerformed(ActionEvent e) {
//tạo vector chứa tên các cột của Jtable
Vector rowHeader = new Vector ();
rowHeader.add ("ho ten");
rowHeader.add ("nam sinh");
rowHeader.add ("dia chi");
//tạo TableModel chứa dữ liệu cho Jtable
DefaultTableModel model = new DefaultTableModel(rowHeader,0);
jTable1.setModel(model);
//tạo các biến cần thiết để truy xuất database
String newSQL="SELECT * FROM testdb";
String conStr = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\\data\\MyAccess.mdb";
Connection con;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(conStr,"","");
Statement stmt = con.createStatement();
//thực thi câu truy vấn để đọc các record
ResultSet rs =stmt.executeQuery(newSQL);
Vector rowData;
//lặp hiển thị từng record lên JTable
if (rs != null) while (rs.next()){
rowData = new Vector() ;
rowData.add (rs.getString("hoten"));
rowData.add (String.valueOf(rs.getInt("namsinh")));
rowData.add (rs.getString("diachi"));
model.addRow(rowData) ;
}
//đóng các đối tượng đã dùng
rs.close(); stmt.close(); con.close();
} catch(Exception ex){System.out.println("Error : "+ex);}
}
}
Lưu ý rằng để hàng header của JTable hiển thị, bạn phải thiết kế JTable chứa đối tượng JScrollPane (cho phép cuộn dữ liệu lên/xuống).
...
//import các class cần dùng
import javax.swing.table.DefaultTableModel;
import java.util.Vector;
import javax.swing.JScrollPane;
import java.sql.*;
...
public class TestDBDlg extends JFrame {
...
//hàm truy xuất và hiển thị các record lên JTable
public void jbtnStart_actionPerformed(ActionEvent e) {
//tạo vector chứa tên các cột của Jtable
Vector rowHeader = new Vector ();
rowHeader.add ("ho ten");
rowHeader.add ("nam sinh");
rowHeader.add ("dia chi");
//tạo TableModel chứa dữ liệu cho Jtable
DefaultTableModel model = new DefaultTableModel(rowHeader,0);
jTable1.setModel(model);
//tạo các biến cần thiết để truy xuất database
String newSQL="SELECT * FROM testdb";
String conStr = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\\data\\MyAccess.mdb";
Connection con;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(conStr,"","");
Statement stmt = con.createStatement();
//thực thi câu truy vấn để đọc các record
ResultSet rs =stmt.executeQuery(newSQL);
Vector rowData;
//lặp hiển thị từng record lên JTable
if (rs != null) while (rs.next()){
rowData = new Vector() ;
rowData.add (rs.getString("hoten"));
rowData.add (String.valueOf(rs.getInt("namsinh")));
rowData.add (rs.getString("diachi"));
model.addRow(rowData) ;
}
//đóng các đối tượng đã dùng
rs.close(); stmt.close(); con.close();
} catch(Exception ex){System.out.println("Error : "+ex);}
}
}
Lưu ý rằng để hàng header của JTable hiển thị, bạn phải thiết kế JTable chứa đối tượng JScrollPane (cho phép cuộn dữ liệu lên/xuống).
Trả lời câu hỏi
Câu hỏi lĩnh vực Lập trình
Rao vặt Siêu Vip