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 :
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 {
// Kumpulan Data Orang
private ArrayList
public TableModelOrang() {
// Mendeklarasikan Data
data = new ArrayList
}
// Menghapus Orang
public Orang remove(int index) {
Orang forReturn = data.remove(index);
// memberi tahu bahwa ada data yang dihapus
fireTableRowsDeleted(index, index);
return forReturn;
}
// Mendapatkan Orang
public Orang get(int index) {
return data.get(index);
}
// Menambah Orang
public boolean add(Orang e) {
boolean forReturn = data.add(e);
// Memberi tahu bahwa ada data yang masuk
fireTableRowsInserted(data.size() - 1, data.size() - 1);
return forReturn;
}
// Mengubah Orang
public Orang set(int index, Orang element) {
Orang forReturn = data.set(index, element);
// Memberitahu bahwa ada data yang diupdate
fireTableRowsUpdated(index, index);
return forReturn;
}
// Panjang Baris
public int getRowCount() {
return data.size();
}
// Panjang Kolom
public int getColumnCount() {
return 4;
}
// Nilai untuk cell(baris, kolom)
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;
}
}
// Nama Kolom pada posisi ke-?
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());
// menambahkan ke model
modelOrang.add(orang);
}
Sekarang beri aksi untuk tombol Ubah :
private void buttonUbahActionPerformed(java.awt.event.ActionEvent evt) {
if (tableOrang.getSelectedRowCount() == 0) {
// Data Table tak ada yang terseleksi
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());
// Mengubah Data yang terseleksi
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) {
// Data Table tak ada yang terseleksi
javax.swing.JOptionPane.showMessageDialog
(this, "Silahkan Seleksi Data Tabel Dulu!");
} else {
if (javax.swing.JOptionPane.showConfirmDialog(this, "Anda Yakin?") ==
javax.swing.JOptionPane.OK_OPTION) {
// menghapus data yang terseleksi
int index = tableOrang.convertRowIndexToModel
(tableOrang.getSelectedRow());
modelOrang.remove(index);
}
}
}
sekarang coba jalankan formnya :
see you at next trixxx……Rock with Java!!!!!!