perlu diketahui kalo Swing dibuat menggunakan konsep MVC (Model View Controller), sehingga setiap komponen terdiri dari bagian Model, bagian View, dan bagian Controller.
- Model, merupakan bagian yang digunakan untuk menampung data
- View, merupakan bagian untuk menampilkan data
- Controller, merupakan bagian yang digunakan untuk proses manipulasi data.
jadi walaupun ini membuat rumit, tapi ini membuat mudah programmer dalam membuat sebuah aplikasi.
Dalam kasus ini, yaitu TABEL, yang merupakan Model adalah TableModel. yang merupakan View adalah JTable. dan yang merupakan controller adalah proses insert, update, delete dan event yang digunakan oleh TableModel dan JTable.
Sekarang kita akan mencoba membuat sebuah class yang akan digunakan oleh TableModel, misal class Orang :
import java.util.Date;
public class Orang {
private String nama;
private String jenisKelamin;
private Date tanggalLahir;
private String alamat;
public Orang() {
}
public String getAlamat() {
return alamat;
}
public void setAlamat(String alamat) {
this.alamat = alamat;
}
public String getJenisKelamin() {
return jenisKelamin;
}
public void setJenisKelamin(String jenisKelamin) {
this.jenisKelamin = jenisKelamin;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public Date getTanggalLahir() {
return tanggalLahir;
}
public void setTanggalLahir(Date tanggalLahir) {
this.tanggalLahir = tanggalLahir;
}
}
sekarang kita buat sebuah class yang bernama TableModelOrang, yang merupakan class untuk model JTable. dan ingat class tersebut harus turunan dari interface TableModel :
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
public class TableModelOrang extends AbstractTableModel {
private ArrayList data;
public TableModelOrang() {
data = new ArrayList();
}
public Orang remove(int index) {
Orang forReturn = data.remove(index);
fireTableRowsDeleted(index, index);
return forReturn;
}
public Orang get(int index) {
return data.get(index);
}
public boolean add(Orang e) {
boolean forReturn = data.add(e);
fireTableRowsInserted(data.size() - 1, data.size() - 1);
return forReturn;
}
public Orang set(int index, Orang element) {
Orang forReturn = data.set(index, element);
fireTableRowsUpdated(index, index);
return forReturn;
}
public int getRowCount() {
return data.size();
}
public int getColumnCount() {
return 4;
}
public Object getValueAt(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
return data.get(rowIndex).getNama();
case 1:
return data.get(rowIndex).getJenisKelamin();
case 2:
return data.get(rowIndex).getTanggalLahir();
case 3:
return data.get(rowIndex).getAlamat();
default:
return null;
}
}
public String getColumnName(int column) {
switch (column) {
case 0:
return "Nama";
case 1:
return "Jenis Kelamin";
case 2:
return "Tanggal Lahir";
case 3:
return "Alamat";
default:
return null;
}
}
}
sekarang kita buat sebuah form yang digunakan untuk memanipulasi data. buatlah form seperti dibawah ini menggunakan NetBeans IDE:

keterangan :
- untuk nama menggunakan JTextField dan nama variablenya textNama
- untuk jenis kelamin menggunakan JComboBox dan nama variabelnya comboJenisKelamin
- untuk tangal lahir menggunakan JSpinner dan nama variablenya spinnerTanggalLahir
- untuk alamat menggunakan JTextArea dan nama variablenya areaAlamat
- untuk tombol tambah nama variablenya buttonTambah
- untuk tombol ubah nama variablenya buttonUbah
- untuk tombol hapus nama variablenya buttonHapus
- untuk tabel nama variablenya tableOrang
sekarang ubah nilai model comboJenisKelamin menjadi [Laki-Laki, Perempuan] :


setelah itu ubah nilai model untuk spinnerTanggalLahir menjadi Date :

setelah itu buatlah sebuah variable TableModelOrang :

setelah itu inisialisasikan nilai awal model tersebut sebelum pemanggilan metode initComponents(), lalu set model tersebut ke tableOrang :

sekarang coba jalankan, maka akan terlihat seperti ini :

sekarang beri ActionListener ke tombolTambah dengan cara klik kanan tombolnya lalu pilih Events -> Action -> actionPerformed:

private voidOrang orang = buttonTambahActionPerformed(java.awt.event.ActionEvent evt) { Orang orang = new Orang();
orang.setNama(textNama.getText());
orang.setJenisKelamin((String) comboJenisKelamin.getSelectedItem());
orang.setTanggalLahir((Date) spinnerTangalLahir.getValue());
orang.setAlamat(areaAlamat.getText());
modelOrang.add(orang);
}
Sekarang beri aksi untuk tombol Ubah :
private void buttonUbahActionPerformed(java.awt.event.ActionEvent evt) {
if (tableOrang.getSelectedRowCount() == 0) {
javax.swing.JOptionPane.showMessageDialog(this, "Silahkan Seleksi Data Tabel Dulu!");
} else {
Orang orang = new Orang();
orang.setNama(textNama.getText());
orang.setJenisKelamin((String) comboJenisKelamin.getSelectedItem());
orang.setTanggalLahir((Date) spinnerTangalLahir.getValue());
orang.setAlamat(areaAlamat.getText());
int index = tableOrang.convertRowIndexToModel(tableOrang.getSelectedRow());
modelOrang.set(index, orang);
}
}
Sekarang beri aksi untuk tombolHapus :
private void buttonHapusActionPerformed(java.awt.event.ActionEvent evt) {
if (tableOrang.getSelectedRowCount() == 0) {
javax.swing.JOptionPane.showMessageDialog
(this, "Silahkan Seleksi Data Tabel Dulu!");
} else {
if (javax.swing.JOptionPane.showConfirmDialog(this, "Anda Yakin?") ==
javax.swing.JOptionPane.OK_OPTION) {
int index = tableOrang.convertRowIndexToModel
(tableOrang.getSelectedRow());
modelOrang.remove(index);
}
}
}
sekarang coba jalankan formnya :

see you at next trixxx……Rock with Java!!!!!!