Bagaimana cara membuat JTable
diisi dari database Derby dengan pagination dan kotak centang kontrol (hapus/edit data).
Saya tahu cara mendapatkan data dari database:
public List<Customer> getDataOnPage(int pageIndex, int rowIndex)
{
List<Customer> dataOnPage = new ArrayList<>();
//...
while (rs.next())
{
Customer customer = new Customer();
customer.setId(rs.getInt(1);
customer.setName(rs.getString(2));
dataOnPage.add(customer);
}
//....
return dataOnPage;
}
Buat kelas AbstractTableModel
khusus dengan metode khusus:
public class CustomerAbstractTableModel
{
List<Customer> data = new ArrayList<>();
public void setData(List<Customer> data)
{
this.data = data;
super.fireTableDataChanged();
}
// overriden getRowCount(), getColumnCount() and getValueAt(int rowIndex, int columnIndex)
}
Dan bungkus AbstractTableModel
khusus saya ke AbstracTtableModel
lain seperti di sini. Untuk memiliki kolom dengan kotak centang.
Kemudian buat metode di kelas tampilan saya yang membuat halaman dan dipanggil dengan mengklik tombol (dalam metode actionPerformed(ActionEvent e)
)
int pageIndex = 0;
private void paginate()
{
List<Customer> data = customerDao.getDataOnPage(pageIndex, 10);
customerWrapperAbstractTableModel.setData(data);
}
Masalah dengan solusi ini adalah setiap kali saya mengubah halaman (membuat halaman) saya akan kehilangan nilai di kotak centang. Karena data baru ditetapkan. Bagaimana saya bisa membuat halaman dan menyimpan nilai di kotak centang. Misalnya GMail memiliki fitur ini.