Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Tablas
Annita Sin conexión
Super Moderator
******

Mensajes: 99
Registro en: Jun 2010
Reputación: 0
Mensaje: #1
Tablas
Buenas Noches Profe

Tengo una tabla que debe mostrar 5 avatares siempre por defecto.

Las columnas de la tabla son Nombre y Acciones

Un avatar tienes las Acciones de Seleccionar, Ver, etc.

Si un usuario no tiene los 5 avatares completos se muestran esas filas vacias (pero se muestra) con la accion de Crear uno nuevo.

Hay alguna forma de que cambien las acciones de una tabla en funcion de un valor? Porque a las tablas se les pasa la columna previamente definida.

[Imagen: Firma.png]
18-02-2011 09:10 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
demian Sin conexión
Administrator
*******

Mensajes: 1.808
Registro en: Jun 2010
Reputación: 0
Mensaje: #2
RE: Tablas
Bueno, generalmente en la tabla tienes un modelo, y el modelo contiene una lista de objetos.

Por ejemplo, una tabla de avatares puede contener un modelo con una lista de AvatarDTO... eso debería estar claro a estas alturas.

Normalmente usas un "NestedRenderer" (O como se llame, no tengo el código a mano) al que le añades los renderers que generan los botones. Creo que esa estrategia no va a funcionar en este caso y vas a tener que implementar un "CellRenderer" particular para esa tabla. La idea es la siguiente.

En lugar de tener un modelo con AvatarDTO, vas a crear un simple JavaBean que contiene una referencia a AvatarDTO, por ejemplo:

Código:
class AvatarBean {

  public AvatarDTO avatarRef;
}

Y en el modelo vas a tener una lista de objetos de tipo AvatarBean en lugar de AvatarDTO. La idea es que si la referencia dentro de avatarRef apunta a una instancia de avatarDTO (no nula me refiero) entonces es una entrada "válida" que en efecto representa un avatar, pero si la referencia apunta a nulo, entonces es una entrada vacia.

Lo que puedes hacer es implementar un CellRenderer que muestre los botones (ojo, sin usar NestedCellRendere como ya dije antes). Si recuerdas, a la función que retorna el Component del CellRenderer recibe un Object (que creo que se llama value) que representa el "objeto" del modelo para el cual se está solicitando el componente. Es decir, en este caso particular, ese parámetro va a ser una instancia de AvatarBean (de modo que puedes hacer un cast a AvatarBean tranquilamente). Luego simplemente pones un if y preguntas si la referencia es nula o no. Si la referencia es nula, entonces retornas un row con el boton de "Crear" (porque no hay avatar en esa posición aún. Si la referencia es no nula, entonces retornas un Row con los botones correspondientes a un avatar existente: Ver, Usar, Eliminar, etc.

¿Me sigues?
Cualquier duda me dices... Y si entendiste, entonces +1 a tus skills de "Arquitectura", "Programación" y "TecnoBable" Wink

[Imagen: dmi-1.jpg]
18-02-2011 10:01 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Annita Sin conexión
Super Moderator
******

Mensajes: 99
Registro en: Jun 2010
Reputación: 0
Mensaje: #3
RE: Tablas
Siii Big Grin Entendido y ya esta funcionando Big Grin

Tengo el AvatarBean, AvatarBeanList (que recibe una lista de avatarDTO, los transforma a AvatarBean y lo agrega a la lista) esto es lo que se le pasa al tableDataModel para q genere la tabla.

Y tambien tengo un AvatarCellRenderer pero le agregue un eventListenerList para poder que los eventos de los botones lo maneje la clase que lo instancie y no ella misma!

[Imagen: Firma.png]
19-02-2011 01:13 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Enviar respuesta 


Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)