Ver Mensaje Individual
  #14 (permalink)  
Antiguo 30/03/2013, 13:53
LuisChavezB
 
Fecha de Ingreso: diciembre-2011
Mensajes: 152
Antigüedad: 13 años
Puntos: 34
Respuesta: Paginando Jtable

El problema que tienes es de planteo, lo que tu quieres paginar no es el modelo ya que los datos que están en el modelo son los datos que actualmente están visibles en la pantalla, lo que tienes que paginar son los datos antes de agregarlos al modelo.
En el ejemplo que te puse yo pagine un array, simplemente cambiando los datos en la variable data y adaptando la lógica de la función onPage(en caso de ser necesario) ya debería de funcionar.
Código java:
Ver original
  1. public class Test {
  2.  
  3.     private String[] data = {"luis", "pepe", "juan", "Ernesto"};
  4.     /*
  5.      * Components
  6.      */
  7.     private JFrame frame = new JFrame("Test Paginable");
  8.     private PaginableTable paginableTable = new PaginableTable();
  9.  
  10.     public void start() {
  11.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  12.         frame.setLayout(new GridLayout(3, 2));
  13.         frame.setSize(400, 400);
  14.         frame.setResizable(false);
  15.  
  16.         paginableTable.setItemsPerPage(2);
  17.         double lastPage = Math.ceil((double) data.length / paginableTable.itemsPerPage());
  18.         paginableTable.setLastPage((int) lastPage);
  19.         System.out.println(paginableTable.lastPage());
  20.         paginableTable.setPaginableListener(new PaginableListener() {
  21.             @Override
  22.             public void onPage(Paginable paginable, int page) {
  23.                 DefaultTableModel model = (DefaultTableModel) ((PaginableTable) paginable).getModel();
  24.                 if (model.getColumnCount() == 0) {
  25.                     model.addColumn("Name");
  26.                 }
  27.                 model.setRowCount(0);
  28.                 int to = page * paginable.itemsPerPage();
  29.                 int from = to - paginable.itemsPerPage();
  30.                 for (int i = from; i < to; i++) {
  31.                     if (data.length > i) {
  32.                         model.addRow(new Object[]{data[i]});
  33.                         continue;
  34.                     }
  35.                     break;
  36.                 }
  37.             }
  38.         });
  39.  
  40.         JButton previousButton = new JButton("Previous");
  41.         previousButton.addActionListener(new ActionListener() {
  42.             @Override
  43.             public void actionPerformed(ActionEvent e) {
  44.                 paginableTable.previous();
  45.             }
  46.         });
  47.         JButton nextButton = new JButton("Next");
  48.         nextButton.addActionListener(new ActionListener() {
  49.             @Override
  50.             public void actionPerformed(ActionEvent e) {
  51.                 paginableTable.next();
  52.             }
  53.         });
  54.  
  55.         frame.add(previousButton);
  56.         frame.add(nextButton);
  57.         frame.add(paginableTable);
  58.  
  59.         paginableTable.setPage(1);
  60.  
  61.         frame.setVisible(true);
  62.     }
  63.  
  64.     public static void main(String... args) {
  65.         new Test().start();
  66.     }
  67. }