1. Kompetensi dasar
Masahasiswa dapat menggunakan komponen JTable untuk menampilkan data dari database
2. Teori Dasar
Salah satu komponen Swing yang paling sering kita gunakan dalm membuat sebuah aplikasi
(terutama aplikasi database), adalah JTable milik Swing.
Komponen yang sangat penting ini, memiliki kemampuan yang luas. baik dari segi
tampilan/interface ataupun dari segi data yang ada didalammnya.
Jtable hanya berfungsi sebagai Viewer data. artinya data yang sebenarnya tidak disimpan didalam
JTable melainkan dalam TableModel. jadi salah klo mengira data yang kita inputkan kedalam
JTable disimpan di Jtable.
dengan begitu untuk merubah, menambah, mengambil nilai yang ada di dalam JTable yang
diperlukan adalah mengubah TableModel nya saja.
3. Praktikum
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.table.AbstractTableModel;
/**
*
* @author root
*/
public class ResultSetTableModel extends AbstractTableModel{
private ResultSet rs;
public ResultSetTableModel(ResultSet rs) {
this.rs = rs;
}
public int getColumnCount() {
try {
if(rs == null)
return 0;
else
return rs.getMetaData().getColumnCount();
}catch(SQLException e) {
System.out.println("resultset generating error while getting column
count");
System.out.println(e.getMessage());
return 0;
}
}
public int getRowCount() {
try {
if(rs == null)
return 0;
else {
rs.last();
return rs.getRow();
}
}catch(SQLException e) {
System.out.println("resultset generating error while getting rows
count");
System.out.println(e.getMessage());
return 0;
}
}
public Object getValueAt(int rowIndex, int columnIndex) {
if(rowIndex<0 || rowIndex > getRowCount() ||
columnIndex < 0 || columnIndex > getColumnCount())
return null;
try {
if(rs == null)
return null;
else {
rs.absolute(rowIndex+1);
return rs.getObject(columnIndex+1);
}
}catch(SQLException e) {
System.out.println("resultset generating error while fetching rows");
System.out.println(e.getMessage());
return null;
}
}
@Override
public String getColumnName(int columnIndex) {
try {
return rs.getMetaData().getColumnName(columnIndex+1);
}catch (SQLException e) {
System.out.println("resultset generating error while fetching column
name");
System.out.println(e.getMessage());
}
return super.getColumnName(columnIndex);
}
}
Class digunakan untuk mendukung class siswa, tambahkan code berikut pada class siswa
Siswa (){
//pengaturan Tabel
skrTabel.getViewport().add(tabel);
tabel.setEnabled(true);
skrTabel.setBounds(15, 250, 470, 115);
}
void Tambah(){
. . . .
. . . .
}
catch(SQLException e){
JOptionPane.showMessageDialog(null,"Data tidak ditambahkan ke" +
" database","infomasi",JOptionPane.INFORMATION_MESSAGE);
}
TampilTabel();
}
void Ubah(){
. . . .
. . . .
catch(SQLException e){
JOptionPane.showMessageDialog(null,"Data tidak
diUbah","infomasi",JOptionPane.
INFORMATION_MESSAGE);
}
TampilTabel();
}
void Hapus(){
. . . .
. . . .
catch(SQLException e){
JOptionPane.showMessageDialog(null,"Data tidak
dihapus","infomasi",JOptionPane.
INFORMATION_MESSAGE);
}
TampilTabel();
}
void TampilTabel(){
try {
Koneksi ObjKoneksi = new Koneksi();
Connection con = ObjKoneksi.bukaKoneksi();
Statement st = con.createStatement();
String sql = "SELECT * FROM siswa";
ResultSet set = st.executeQuery(sql);
//menampilkan data ke Tabel
ResultSetTableModel model = new ResultSetTableModel(set);
tabel.setModel(model);
while(set.next()){
txtNis.setText(Integer.toString(set.getInt("nis")));
txtNama.setText(set.getString("nama"));
txtPassword.setText(set.getString("password"));
txtAlamat.setText(set.getString("alamat"));
txtEmail.setText(set.getString("email"));
cboJenisKelamin.addItem(set.getString("jeniskelamin"));
}
}
catch(SQLException e) {
System.out.println("gagal query");
}
}