Ver Mensaje Individual
  #3 (permalink)  
Antiguo 09/12/2013, 13:27
Avatar de detective_jd
detective_jd
 
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años, 1 mes
Puntos: 6
Respuesta: Estuctura para paginar

hola LuisChavezB, gracias x responder te tengo buenas noticias: los métodos first, previous, next y last andan bien:

<code>
package paginacionnivel2;
import java.util.*;
public class TreePages<T>
{
private final TreeMap<Integer,T[]>colPaginas=new TreeMap();
private final int cantpaginas;
private final T[]arreglo;
private int nropagina;
private T[]pagina;
public TreePages(T[] xarreglo, int xcantpaginas) {
this.arreglo = xarreglo;
this.cantpaginas = xcantpaginas;
this.nropagina=1;
this.iniciarPaginas();
}
public T[] next(){
if(colPaginas.lastKey()==nropagina)
pagina=last();
else
{
nropagina++;
pagina=colPaginas.get(nropagina);
}
return pagina;
}
public T[] previous() {
if(colPaginas.firstKey()==nropagina)
pagina=first();
else
{
nropagina--;
pagina=colPaginas.get(nropagina);
}
return pagina;
}
public T[] first(){
if(nropagina!=colPaginas.firstKey())
{
nropagina=colPaginas.firstKey();
pagina=colPaginas.get(colPaginas.firstKey());
}
else
{
nropagina=colPaginas.firstKey();
pagina=colPaginas.get(colPaginas.firstKey());
}
return pagina;
}
public T[] last(){
if(nropagina!=colPaginas.lastKey())
{
nropagina=colPaginas.lastKey();
pagina=colPaginas.get(colPaginas.lastKey());
}
else
{
nropagina=colPaginas.lastKey();
colPaginas.get(nropagina);
}
return pagina;
}
private void iniciarPaginas()
{
int cont=1;
int totpaginas=arreglo.length/cantpaginas;
int lower = 0;
int upper = 0;
for(int i=0; i<totpaginas; i++){
upper+=totpaginas;
colPaginas.put(cont,Arrays.copyOfRange(arreglo, lower, upper));
lower = upper;
cont++;
}
if(upper < arreglo.length-1){
lower = upper;
upper = arreglo.length;
colPaginas.put(cont,Arrays.copyOfRange(arreglo, lower, upper));
cont++;
}
}

}
</code>

pero me queda un error en el método iniciarpaginas y es q en la cantidad de registros x pagina pongo 5 y me hace 5 páginas de 4 filas:

<code>
package paginacionnivel2;
import java.util.LinkedList;
public class ContrRatas
{
private static ContrRatas objgestor=null;
private LinkedList<Ratas>colratas=null;
TreePages<Ratas>paginas=null;
public static ContrRatas getInstance()
{
if(objgestor==null)
{
objgestor=new ContrRatas();
}
return objgestor;
}
private ContrRatas()
{
colratas=new LinkedList();
Ratas objr1=new Ratas(1,"hjjh");
colratas.add(objr1);
Ratas objr2=new Ratas(2,"vcvc");
colratas.add(objr2);
Ratas objr3=new Ratas(3,"bvbv");
colratas.add(objr3);
Ratas objr4=new Ratas(4,"vcvc");
colratas.add(objr4);
Ratas objr5=new Ratas(5,"jhhj");
colratas.add(objr5);
Ratas objr6=new Ratas(6,"fdfd");
colratas.add(objr6);
Ratas objr7=new Ratas(7,"bhbh");
colratas.add(objr7);
Ratas objr8=new Ratas(8,"rddr");
colratas.add(objr8);
Ratas objr9=new Ratas(9,"aqqa");
colratas.add(objr9);
Ratas objr10=new Ratas(10,"kjjk");
colratas.add(objr10);
Ratas objr11=new Ratas(11,"fdfd");
colratas.add(objr11);
Ratas objr12=new Ratas(12,"gfgf");
colratas.add(objr12);
Ratas objr13=new Ratas(13,"vcvc");
colratas.add(objr13);
Ratas objr14=new Ratas(14,"lkkl");
colratas.add(objr14);
Ratas objr15=new Ratas(15,"jhjh");
colratas.add(objr15);
Ratas objr16=new Ratas(16,"vcvc");
colratas.add(objr16);
Ratas objr17=new Ratas(17,"gfgf");
colratas.add(objr17);
Ratas objr18=new Ratas(18,"hghghg");
colratas.add(objr18);
Ratas objr19=new Ratas(19,"gffg");
colratas.add(objr19);
Ratas objr20=new Ratas(20,"rrffr");
colratas.add(objr20);
Ratas[]aux=colratas.toArray(new Ratas[colratas.size()]);
paginas=new TreePages(aux, 5);
}
public Ratas[] devolverArray()
{
return colratas.toArray(new Ratas[colratas.size()]);
}
public TreePages<Ratas>devolverPaginas()
{
return paginas;
}
/*
public LinkedList<Ratas>devolverDatosXNombre(String criterio)
{
LinkedList<Ratas>aux =new LinkedList();
for(Ratas objr : colratas)
{
if(objr.getNombre().startsWith(criterio.toUpperCas e())){
aux.add(objr);
}
if(objr.getNombre().startsWith(criterio.toLowerCas e())){
aux.add(objr);
}
}
return aux;
}*/

}
</code>

<code>
package paginacionnivel2;
public class Ratas
{
private int numero;
private String nombre;
public int getNumero()
{
return numero;
}
public String getNombre()
{
return nombre;
}
public Ratas(int numero, String nombre)
{
this.numero = numero;
this.nombre = nombre;
}
@Override
public String toString()
{
return "RATA:"+ numero + " NOMBRE: " + nombre;
}
}
</code>

acá esta el cuerpo del programa:

<code>
package paginacionnivel2;
import java.util.Scanner;
public class Cuerpo
{
private static void MenuPrincipal()
{
Ratas[]aux=null;
Scanner sc=new Scanner(System.in);
System.out.println("");
System.out.println("Menú Principal de la TreePages:");
System.out.println("");
System.out.println("Seleccione su Opción: ");
System.out.println("");
System.out.println("Primero: 1");
System.out.println("Anterior: 2");
System.out.println("Siguiente: 3");
System.out.println("Último: 4");
System.out.println("Salir: 5");
int opcion=sc.nextInt();
if(opcion==1)
{
aux=ContrRatas.getInstance().devolverPaginas().fir st();
listarPagina(aux);
}
else if(opcion==2)
{
aux=ContrRatas.getInstance().devolverPaginas().pre vious();
listarPagina(aux);
}
else if(opcion==3)
{
aux=ContrRatas.getInstance().devolverPaginas().nex t();
listarPagina(aux);
}
else if(opcion==4)
{
aux=ContrRatas.getInstance().devolverPaginas().las t();
listarPagina(aux);
}
else if(opcion==5)
{
System.exit(0);
}
else
{
System.out.println("");
System.out.println("Error. Ingrese una de las opciones que aparece en el sistema");
}
MenuPrincipal();
}
private static void listarPagina(Ratas[]aux)
{
for(Ratas objr : aux)
{
if(objr!=null)
{
System.out.println(objr);
}
}
}
public static void main(String[] args)
{
MenuPrincipal();
}
}
</code>

sólo queda solucionar que cuando pongo en el constructor de la clase ContrRatas y pongo 5 cómo parámetro a la variable paginas, tendría q hacer 4 páginas de 5 filas y no 5 páginas de 4 filas.
si me ayudan se los agradezco.

Última edición por detective_jd; 09/12/2013 a las 13:36