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

Vector con objetos, añadir en JList

Estas en el tema de Vector con objetos, añadir en JList en el foro de Java en Foros del Web. Hola compañeros: Seré breve XD. Al añadir un vector con objetos al JList, me aparece su dirección en memoria y no el nombre del objeto. ...
  #1 (permalink)  
Antiguo 13/12/2011, 16:11
Avatar de oscarsb1988  
Fecha de Ingreso: abril-2010
Mensajes: 40
Antigüedad: 14 años
Puntos: 0
De acuerdo Vector con objetos, añadir en JList

Hola compañeros:

Seré breve XD. Al añadir un vector con objetos al JList, me aparece su dirección en memoria y no el nombre del objeto. La idea es que me aparezca el nombre del objeto.

Código JAVA:
Ver original
  1. Vector<Producto>Productos=new Vector();    
  2.        
  3. Producto Ratón = new Producto("Ratón Logitech",10,2);
  4. Producto Teclado = new Producto("Teclado Logitech",30,5);
  5. Producto Pantalla = new Producto("Monitor TFT 19 pulg.",85,10);
  6. Producto Impresora = new Producto("Impresora HP Deskjet 1000",42,5);
  7. Producto Ordenador = new Producto("Intel Dual Core G620 2.60 GHz",310,30);
  8.                
  9. Productos.add(Ratón);
  10. Productos.add(Teclado);
  11. Productos.add(Pantalla);
  12. Productos.add(Impresora);
  13. Productos.add(Ordenador);
  14.  
  15. for(int i=0; i<=Productos.size()-1; i++){  
  16.         modelo.addElement(Productos.get(i));
  17. }  
  18.                
  19. lst1.setModel(modelo);

Alguna solución? Gracias
  #2 (permalink)  
Antiguo 14/12/2011, 03:32
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Vector con objetos, añadir en JList

Tienes dos formas (que yo conozca):

Redefinir el método toString de la clase Producto.

Crear un Custom Cell Renderer, creando una clase que implemente la interfaz ListCellRenderer y usar el método setCellRenderer.

Código Java:
Ver original
  1. class MyCellRenderer extends JLabel implements ListCellRenderer {
  2.      final static ImageIcon longIcon = new ImageIcon("long.gif");
  3.      final static ImageIcon shortIcon = new ImageIcon("short.gif");
  4.  
  5.      // This is the only method defined by ListCellRenderer.
  6.      // We just reconfigure the JLabel each time we're called.
  7.  
  8.      public Component getListCellRendererComponent(
  9.        JList list,
  10.        Object value,            // value to display
  11.        int index,               // cell index
  12.        boolean isSelected,      // is the cell selected
  13.        boolean cellHasFocus)    // the list and the cell have the focus
  14.      {
  15.          String s = value.toString();
  16.          setText(s);
  17.          setIcon((s.length() > 10) ? longIcon : shortIcon);
  18.        if (isSelected) {
  19.              setBackground(list.getSelectionBackground());
  20.            setForeground(list.getSelectionForeground());
  21.        }
  22.          else {
  23.            setBackground(list.getBackground());
  24.            setForeground(list.getForeground());
  25.        }
  26.        setEnabled(list.isEnabled());
  27.        setFont(list.getFont());
  28.          setOpaque(true);
  29.          return this;
  30.      }
  31.  }
  32.  
  33.  String[] data = {"one", "two", "three", "four"};
  34.  JList dataList = new JList(data);
  35.  dataList.setCellRenderer(new MyCellRenderer());

La primera es más sencilla, pero la segunda tiene más posibilidades de personalización (como poner imágenes).

Etiquetas: jlist, objetos, vectores
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:28.