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

[SOLUCIONADO] JList - ¿Cómo se programa el renderer?

Estas en el tema de JList - ¿Cómo se programa el renderer? en el foro de Java en Foros del Web. Hola gente! Hoy tengo otro problema distinto. He estado buscando ya varias horas por la web pero no consigo encontrar una solución: No sé cómo ...
  #1 (permalink)  
Antiguo 02/04/2015, 17:49
 
Fecha de Ingreso: diciembre-2008
Mensajes: 50
Antigüedad: 15 años, 4 meses
Puntos: 0
JList - ¿Cómo se programa el renderer?

Hola gente!

Hoy tengo otro problema distinto. He estado buscando ya varias horas por la web pero no consigo encontrar una solución: No sé cómo dar formato a las celdas de mi JList. Sí sé que se hace con el ListCellRenderer, pero no tengo ni idea de cómo utilizarlo.

En estos momentos mi lista está así:

http://gyazo.com/1b60c62523d9537925bd0a77fb2c9c26

http://gyazo.com/49183291d78387dfa7404a7655ff588b

El problema es que yo quiero que, en vez de ocupar una sola linea de diezmil caracteres, vaya ocupando varias, nada más.

Por una parte, encontré este código:

Código Java:
Ver original
  1. import java.awt.Component;
  2.  
  3. import javax.swing.JList;
  4. import javax.swing.JTextArea;
  5. import javax.swing.ListCellRenderer;
  6.  
  7. public class CustomListRenderer implements ListCellRenderer {
  8.     //implements ListCellRenderer
  9.  
  10.        @Override
  11.        public Component getListCellRendererComponent(JList list, Object value, int index,
  12.             boolean isSelected, boolean cellHasFocus) {
  13.  
  14.             JTextArea renderer = new JTextArea(3,10);
  15.             renderer.setText(value.toString());
  16.             renderer.setLineWrap(true);
  17.             return renderer;
  18.        }
  19.     }

El problema de ese código, aunque consigue "relativamente" lo que quiero, es que no me permite seleccionar los elementos de la lista, así como que dependiendo del tamaño de la ventana se come frases o no. Es decir, es un Renderer que no cumple lo que necesito, pero se aproxima.

Si me pudieseis echar una mano ya fuese para entender cómo programar el ListCellRenderer o cualquier otra cosa, lo agradezco mil! :)

PD: Por si a alguno le sirve, para ponerse en contexto la lista es de objetos Visit, los cuales os pongo:

Código Java:
Ver original
  1. private JList<Visit> visitsList;

Código Java:
Ver original
  1. import java.util.Date;
  2.  
  3. public class Visit {
  4.  
  5.     /** ATRIBUTOS */
  6.    
  7.     private String problema;
  8.     private String tratamiento;
  9.     private Date fecha;
  10.    
  11.     /** CONSTRUCTOR */
  12.     public Visit(){
  13.         fecha = new Date();
  14.         tratamiento = new String();
  15.         problema = new String();
  16.     }
  17.    
  18.     public Visit(String trat){
  19.         this();
  20.         tratamiento = trat;
  21.        
  22.     }
  23.    
  24.     public Visit(String prob, String trat){
  25.         this();
  26.         problema = prob;
  27.         tratamiento = trat;
  28.     }
  29.    
  30.     /** MÉTODOS */
  31.     public String toString(){
  32.         return "[" + fecha.toString() + "]\nProblema: " + problema + "\nTratamiento: " + tratamiento + "\n\n";
  33.     }
  34.      
  35. }
  #2 (permalink)  
Antiguo 02/04/2015, 18:04
(Desactivado)
 
Fecha de Ingreso: abril-2015
Ubicación: España
Mensajes: 616
Antigüedad: 9 años, 1 mes
Puntos: 74
Respuesta: JList - ¿Cómo se programa el renderer?

aquí proponen una solución. Mira si te sirve:

http://stackoverflow.com/questions/8197167/word-wrap-in-jlist-items
  #3 (permalink)  
Antiguo 05/04/2015, 13:25
 
Fecha de Ingreso: diciembre-2008
Mensajes: 50
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: JList - ¿Cómo se programa el renderer?

Estupendo! Muchas gracias :)

Etiquetas: jlist, programa, string
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 11:37.