Foros del Web » Programación para mayores de 30 ;) » Java »

Tabular en JList

Estas en el tema de Tabular en JList en el foro de Java en Foros del Web. hola a todos tengo un JLIst el cual lleno con un código similar a este: Código HTML: while(itera.hasNext()){ Registro aux=(Registro)(itera.next()); modelo.addElement(" <html> <font color=blue> "+(ind++)+" ...
  #1 (permalink)  
Antiguo 08/08/2011, 15:07
Avatar de calichecal  
Fecha de Ingreso: junio-2009
Ubicación: Colombia
Mensajes: 288
Antigüedad: 15 años, 5 meses
Puntos: 12
Tabular en JList

hola a todos tengo un JLIst el cual lleno con un código similar a este:


Código HTML:
while(itera.hasNext()){ 

   Registro aux=(Registro)(itera.next());

         modelo.addElement("<html><font color=blue>"+(ind++)+"</font>.     <b>Nombre:</b> <i>"+tabular(aux.getNombre())+
                 "</i> <b>Código:</b> <i>"+tabular(aux.getCodigo())+
                 "</i> <b>Porcentaje obtenido:</b>  "+formato.format(aux.getPorcentaje())+
                 "</i> <b>Nota(1 a 5):</b>  "+formato.format(aux.getNota)+"</html>");


}
donde modelo es un objeto DefaultListModel asociado al JLIst para facilitar las tareas de agregación , eliminación...etc...

el método tabular que aparece allí: tiene la tarea de ajustar todos los string a un mismo tamaño de 16 caracteres, pues siendo todos los String iguales puedo tener una lista con los nombres y demas alineados, así:

Código:
nombre: juan          porcentaje  52%   nota 3.4 
nombre: mariano       porcentaje  65%   nota 4.2
nombre: maria         porcentaje  20%   nota 2.0

y el metodo tabular es este:

Código HTML:
    public String tabular(String nombre){
        
        String r=nombre+"<font color=white>";
        int nCaracteres=nombre.length();
        
        for(int i=nCaracteres;i<16;i++){
            
            r+=".";
            
        }
        r+="</font>";
        
        return r;
    }

inicialmente me puse a concatenarle espacios en blanco por delante del string, pero no los reconocia el JLIst, así que invente concatenarle puntos y luego corresponder el color de los dichos puntos con el blanco de fondo del JList, todo iva de maravilla, pero al probarlo me doy cuenta de que no es posible obtener alineado todos los nombres pues hay unos caracteres que utilizan menos espacio ejemplo(nombres inventados):

Amberto
Milenai

ambos tienen 7 caracteres pero Milenai ocupa menos espacio, así que a pesar de que mi método funciona bien la lista queda así:


Código:
nombre: juan         porcentaje  52%  nota 3.4 
nombre: Amberto        porcentaje  65%  nota 4.2
nombre: Milenai     porcentaje  20%  nota 2.0
pues casí lo logro :(,,

ideas

¿Como logro alinear en un jList?

¿mi método tabular fue un fracaso?

ojala que alguien sepa como

a que si son capacez :P

saludoss...
__________________
Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad. -Einstein-

Última edición por calichecal; 08/08/2011 a las 15:13
  #2 (permalink)  
Antiguo 09/08/2011, 03:04
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Tabular en JList

Hola:

Si quieres tabular, lo mejor es usar un JTable. Si por cualquier motivo necesitas el JList, usa una fuente de letra en la que todos los caracteres ocupen el mismo ancho (fuentes no proporcionales o monospaced), como courier new. En la fuentes proporcionales, una i ocupa menos ancho que un m, así que lo que ocupa una palabra no depende sólo de su número de caracteres, sino también de qué caracteres en concreto sean.

En cuanto a los espacios, JList posiblemente sí los consideraría, pero html es el que se los salta si hay varios. Quizás deberías usar &nbspace; si quieres poner más de un espacio seguido.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 09/08/2011, 14:35
Avatar de calichecal  
Fecha de Ingreso: junio-2009
Ubicación: Colombia
Mensajes: 288
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Tabular en JList

Cita:
Iniciado por chuidiang Ver Mensaje
Hola:

Si quieres tabular, lo mejor es usar un JTable. Si por cualquier motivo necesitas el JList, usa una fuente de letra en la que todos los caracteres ocupen el mismo ancho (fuentes no proporcionales o monospaced), como courier new. En la fuentes proporcionales, una i ocupa menos ancho que un m, así que lo que ocupa una palabra no depende sólo de su número de caracteres, sino también de qué caracteres en concreto sean.

En cuanto a los espacios, JList posiblemente sí los consideraría, pero html es el que se los salta si hay varios. Quizás deberías usar &nbspace; si quieres poner más de un espacio seguido.

Se bueno.
Muchas gracias Chuidiang...
__________________
Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad. -Einstein-

Etiquetas: jlist, tabular
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:27.