การแบ่งหน้าด้วยข้อมูลจากฐานข้อมูลและช่องทำเครื่องหมายควบคุมใน JTable

ฉันจะสร้าง JTable ที่เติมจากฐานข้อมูล Derby ด้วยการแบ่งหน้าและช่องทำเครื่องหมายควบคุม (ลบ / แก้ไขข้อมูล) ได้อย่างไร

ฉันรู้วิธีรับข้อมูลจากฐานข้อมูล:

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;

}

สร้างคลาส AbstractTableModel ที่กำหนดเองด้วยวิธีที่กำหนดเอง:

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)

}

และรวม AbstractTableModel ที่กำหนดเองของฉันเข้ากับ AbstracTtableModel อีกอัน เช่น ที่นี่ เพื่อให้มีคอลัมน์พร้อมช่องทำเครื่องหมาย

จากนั้นสร้างวิธีการในคลาสมุมมองของฉันที่แบ่งหน้าและถูกเรียกเมื่อคลิกปุ่ม (ในวิธี actionPerformed(ActionEvent e))

int pageIndex = 0;

private void paginate()
{

       List<Customer> data = customerDao.getDataOnPage(pageIndex, 10);
       customerWrapperAbstractTableModel.setData(data);

}

ปัญหาในการแก้ปัญหานี้คือเมื่อใดก็ตามที่ฉันเปลี่ยนหน้า (แบ่งหน้า) ฉันจะสูญเสียค่าในกล่องกาเครื่องหมาย เนื่องจากมีการตั้งค่าข้อมูลใหม่ ฉันจะแบ่งหน้าและเก็บค่าไว้ในช่องทำเครื่องหมายได้อย่างไร ตัวอย่างเช่น GMail มีคุณสมบัตินี้


person user3197001    schedule 01.02.2021    source แหล่งที่มา