Memuat data JTable lebih mudah dengan JTableLoader

05 Jan 2017 in Programming · 1 min read

JTableLoader ini merupakan class yang saya buat sendiri untuk menampilkan data dalam bentuk List ke tabel ketika saya mulai mengerjakan project kecil-kecilan yang menggunakan banyak tabel. Idenya, bagaimana memuat data dinamis ke tabel yang skemanya berbeda-beda tanpa mengulang kode.

Dengan class ini saya tidak perlu lagi membuat kode untuk memuat data pada masing-masing tabel secara khusus. Kodenya bisa dilihat di sini.

Penggunaannya cukup mudah. Pertama kita harus punya class model/domain/entity, misal:

public class Orang {
  private String nama;
  private int tahunLahir;

  public Orang(String nama, int tahunLahir) {
    this.nama = nama;
    this.tahunLahir = tahunLahir;
  }

  public String getNama() {
    return this.nama;
  }

  public int getUsia() {
    int tahunIni = Calendar.getInstance().get(Calendar.YEAR);
    return tahunIni - tahunLahir;
  }
}

Lalu untuk contoh list datanya kita hardcode seperti ini:

private final List<Orang> dummyList = Arrays.asList(
    new Orang("Budi", 1990),
    new Orang("Habib", 1995),
    new Orang("Andi", 1993),
    new Orang("Mayang", 1995)
);

Buat instansi dari class JTableLoader:

private final JTableLoader<Orang> loader;

// Konstruktor setelah inisialisasi JTable
this.loader = new JTableLoader<>(jtable, "nama,getUsia");

Contoh pembuatan instansi di atas berlaku jika JTable sudah memiliki table model misalnya model yang dibuat melalui NetBeans GUI Builder. Jika JTable belum memiliki table model, maka cukup menambahkan nama kolom dalam bentuk array pada parameter ketiga konstruktor seperti ini:

this.loader = new JTableLoader<>(jtable, "nama,getUsia", new String[]{"Nama","Usia"});

Untuk menampilkan datanya:

this.loader.load(dummyList);

Lalu jika ingin menampilkan data class model yang berbeda cukup ubah parameter pada class JTableLoader, misalnya class model Kendaraan maka parameternya classnya menjadi JTableLoader<Kendaraan>.

Mudah bukan?

Sekian, semoga bermanfaat.


Referensi: Swing Table, Reflection API, Class Arrays.


Prev
0