Ver Mensaje Individual
  #6 (permalink)  
Antiguo 27/03/2013, 20:23
Avatar de detective_jd
detective_jd
 
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años, 8 meses
Puntos: 6
Respuesta: Paginando Jtable

hola quiero comunicar que cambie todo el código al sgte:

package paginacionconjtable;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
public class PaginatedTable
{
private final int pageSize;
private final JTable tabla;
private final TableModel model;
private final int lastPageNum;
private int currPageNum;
private JButton first;
private JButton prev;
private JButton next;
private JButton last;
/**
* @param list the jlist
* @param pageSize the number of rows visible in the jlist
*/
public PaginatedTable(JTable xtabla, int xpageSize)
{
pageSize = xpageSize;
tabla = xtabla;
model = tabla.getModel();
//work out how many pages there are
lastPageNum = model.getRowCount() / pageSize + (model.getRowCount() % pageSize != 0 ? 1 : 0);
currPageNum = 1;
}
public void setFirst(JButton xfirst)
{
this.first = xfirst;
this.first.addActionListener(new AbstractAction()
{
@Override
public void actionPerformed(ActionEvent e) {
currPageNum = 1;
updatePage();
}
});
}
public void setPrev(JButton xprev)
{
this.prev = xprev;
this.prev.addActionListener(new AbstractAction()
{
@Override
public void actionPerformed(ActionEvent e)
{
if (--currPageNum <= 0)
currPageNum = 1;
updatePage();
}
});
}
public void setNext(JButton xnext)
{
this.next = xnext;
this.next.addActionListener(new AbstractAction()
{
@Override
public void actionPerformed(ActionEvent e)
{
if (++currPageNum > lastPageNum)
currPageNum = lastPageNum;
updatePage();
}
});
}
public void setLast(JButton xlast)
{
this.last = xlast;
this.last.addActionListener(new AbstractAction()
{
@Override
public void actionPerformed(ActionEvent e)
{
currPageNum = lastPageNum;
updatePage();
}
});
}
public void updatePage()
{
//replace the list's model with a new model containing
//only the entries in the current page.
final DefaultTableModel page = new DefaultTableModel();
final int start = (currPageNum - 1) * pageSize;
int end = start + pageSize;
if (end >= model.getRowCount())
{
end = model.getRowCount();
}
for (int i = start; i < end; i++)
{
Object[]row={model.getValueAt(i,0)};
page.addRow(row);
}
tabla.setModel(page);
// update buttons
final boolean canGoBack = currPageNum != 1;
final boolean canGoFwd = currPageNum != lastPageNum;
first.setEnabled(canGoBack);
prev.setEnabled(canGoBack);
next.setEnabled(canGoFwd);
last.setEnabled(canGoFwd);
}
}

en el formulario queda así:

package paginacionconjtable;
import javax.swing.table.DefaultTableModel;
public class frmventana extends javax.swing.JFrame
{
DefaultTableModel modelo;
PaginatedTable objp;
private DefaultTableModel cargarEnteros()
{
modelo=(DefaultTableModel) this.tablaNumeros.getModel();
Integer[] data = new Integer[100];
for (int i = 0; i < data.length; i++)
{
Object[] row={i+1};
modelo.addRow(row);
}
return modelo;
}
public frmventana()
{
initComponents();
this.tablaNumeros.setModel(cargarEnteros());
objp=new PaginatedTable(tablaNumeros, 20);
objp.setFirst(btnprimero);
objp.setPrev(btnanterior);
objp.setNext(btnsiguiente);
objp.setLast(btnultimo);
objp.updatePage();
}

ahora resulta que no me da error pero tampoco me pagina los datos ¿no sé dónde está el problema? si me pueden ayudar, se los agradezco.