Как я могу создать 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 имеет эту функцию.