Hola a todo@s,
Tengo una interfaz que tiene un JTabBedPaned, el numero de tabs que presenta el panel lo creo dinámicamente (inicialmente se genera un tab por cada grupo que hay creado en una tabla de base de datos, pero puedo ir creando o eliminando nuevos grupos en tiempo de ejecución con lo cual pueden aparecer o desaparecer tabs en el jtabbedpane). Todos esos tabs estan formados por los mismos componentes, una jtable y tres botones. Para general esos tabs tengo una función que es la siguiente:
private JPanel genaralPanelGrupo(String nombreGrupo) {
JPanel lista;
JTable lista_contactos;
JScrollPane contenedor_listaScroll;
JButton añadirContacto;
JButton buscarContacto;
JButton eliminarContacto;
ContactosJTable table;
ContactosJTablaModel myModel;
lista=new JPanel();
GroupLayout listaLayout = new GroupLayout(lista);
lista.setLayout(listaLayout);
myModel = new ContactosJTablaModel(conexion,nombreGrupo);
lista_contactos = new ContactosJTable(myModel);
contenedor_listaScroll=new JScrollPane(lista_contactos);
contenedor_listaScroll.setBorder(BorderFactory.cre ateTitledBorder("Listado"));
contenedor_listaScroll.setVerticalScrollBarPolicy( ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
contenedor_listaScroll.setHorizontalScrollBarPolic y(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEED ED);
añadirContacto=new JButton("+Fila");
añadirContacto.setAction(addNewLine());
buscarContacto=new JButton("Buscar");
eliminarContacto=new JButton("Borrar");
eliminarContacto.setAction(removeLine());
.....aqui distribuyo los componentes en el layout....
return lista;
}
Cada tab que genero tiene su propio titulo de pestaña y su tabla con su moledo y sus botones. El problema que tengo es que cuando se pusla sobre los botones, por ejemplo el de añadirContacto, la acción que se realiza es la misma, añadir una línea a la tabla sea cual sea el tab (sólo que la tabla a la que se añade no es la misma, depende del tab que ha generado el evento). El codigo de la accion es el siguiente:
private AbstractAction addNewLine() {
if(accionNuevaLinea == null) {
accionNuevaLinea = new AbstractAction("+Fila",null) {
public void actionPerformed(ActionEvent evt) {
myModel.addNewRow();
}
};
}
return accionNuevaLinea;
}
EL PROBLEMA que tengo es que no puedo poner myModel.addNewRow(), porque myModel es una variable que se encuentra dentro del panel que forma el tab, y que hace referencia a distintos componentes en función del tab en el que estemos (ya que cada tab tiene su tabla y su modelo). ¿Hay alguna manera de conocer mediante la fuente que produce el evento, cual es el panel que lo contiene y acceder a la variable mymodel de dicho panel ?
Espero haberme explicado con claridad sino me lo dicne y intento explicarme mejor.
Una idea que se me ocurrio que no se si es beuna es generarme una clase que extiende jpanel y que sea precisamente el panel con esos componentes, y añadirle una funcion que sea obtenermodelo o algo asi, de manera que en la acción, obtuviera el panel que engloba el boton que generó el evento y luego obtener el modelo, pero no se si funcionaria. Espero me puedan echar un cable
Gracias