使用来自数据库的数据和 JTable 中的控件复选框进行分页

问题描述

如何使用分页和“控制”复选框(删除/编辑数据)创建从 Derby 数据库填充的 JTable

我知道如何从数据库获取数据:

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 中,例如 here。具有带复选框的列。

然后在我的“视图”类中创建“分页”并在按钮点击时调用方法(在 actionPerformed(ActionEvent e) 方法中)

int pageIndex = 0;

private void paginate()
{

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

}

解决方案的问题在于,每当我更改页面分页)时,复选框中的值都会丢失。因为设置了新数据。如何在复选框中分页和保留值。比如 GMail 就有这个功能

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)