Sie sind auf Seite 1von 2

Patrn Adaptador

Hemos decidido hacernos un programa de agenda telefnica en ordenador, en java.


Como somos bastante hbiles, nos olvidamos de todo el tema de ventanas y decidimos
hacer primero el cdigo relativo a la gestin de los datos.

En primer lugar nos hacemos una clase Amigo con varios
atributos: nombre, apellido, telfono, direccin, e-mail, etc, etc. Luego nos hacemos
una clase ListaAmigos que mantiene la lista de amigos y tiene un montn de mtodos
comoaadeAmigo(), borraAmigo(), dameAmigo(int), dimeCuantosAmigosTengo(), etc,
etc.

Ya est todo estupendo. Nuestra clase ListaAmigos funciona perfectamente. Adems
hemos hecho todo el cdigo para guardar y sacar la ListaAmigos de una base de datos.

Ahora nos decidimos a hacer las ventanitas. En java lo que ms nos gusta para meter
la ListaAmigos es un JTable, una especie de tabla con filas y columnas. En cada fila
pondremos a un Amigo y en cada columna uno de sus datos: nombre,apellido, etc.

Nos ponemos con el JTable y resulta que el JTable admite como datos un TableModel.
Un TableModel es una clase que entre otros tiene los mtodos getColumnCount(), para
saber el nmero de columnas de la tabla; getRowCount(), para saber el nmero de filas
de la tabla y getValueAt(fila,columna) para saber el dato de una determinada fila y
columna.

Vaya por Dios!. Nuestra ListaAmigos no se parece en nada al TableModel, no podemos
meterla directamente en un JTable. La pena es que realmente s tiene un parecido,
el getRowCount() es similar al dimeCuantosAmigosTengo(), elgetColumnCount() debera
devolver el nmero de atributos de la clase Amigo y el getValueAt(fila,columna) debera
recoger el dameAmigo(fila) y luego devolver un atributo del Amigo obtenido.

Como no nos apetece deshacer todo lo de ListaAmigos para que se parezca a
un TableModel, echamos mano del patrnAdaptador. Con este patrn tenemos que
hacer una clase AdaptadorListaAmigosATableModel que tenga dentro
unListaAmigos como atributo y que implemente la interface TableModel

public class AdaptadorListaAmigosATableModel implements TableModel
{
private ListaAmigos listaAmigos;
public AdaptadorListaAmigosATableModel (ListaAmigos listaAmigos)
{
this.listaAmigos=listaAmigos;
}
...
}

y ahora slo hay que implementar los mtodos de TableModel haciendo las llamadas
equivalentes en ListaAmigos

public int getColumnCount()
{
return 6; // Suponiendo que Amigo tiene 6 atributos
}

public int getRowCount()
{
return listaAmigos.dimeCuantosAmigosTengo();
}

public Object getValueAt (int fila, int columna)
{
Amigo amigo = listaAmigos.dameAmigo(fila);
switch (columna)
{
case 0: return Amigo.nombre;
caso 1: return Amigo.apellido;
...
}
}

Listo. Nos basta con hacer esto

AdaptadorListaAmigosATableModel adaptador = new
AdaptadorListaAmigosATableModel(listaAmigos);
JTable tabla= new JTable(adaptador);

para tener metida nuestra ListaAmigos en un JTable.

Por supuesto, TableModel lleva ms mtodos que tambin debemos implementar...

Das könnte Ihnen auch gefallen