Actualizar JTable desde otro JFrame

3,983 views
Skip to first unread message

Teli

unread,
Jul 30, 2008, 3:24:41 AM7/30/08
to JavaSOS
Buenos días; mi problema es el siguiente:
- Yo tengo en mi aplicación una tabla con datos que obtengo de la
base de datos, para insertar datos en esa tabla tengo un botón que
cuando hago click sobre el me aparece un nuevo JFrame pidiéndome los
datos del elemento que quiero insertar. Una vez insertado no se me
actualiza la información en el JTable como lo puedo solucionar para
que una vez que cierre el JFrame desde el que inserto el nuevo
elemento se me actualice el JTable de la aplicación.

Gracias y un saludo

Oscar Silva

unread,
Jul 30, 2008, 9:29:36 AM7/30/08
to jav...@googlegroups.com
Puedes intercerpcetar el evento que ocurre antes del cierre de la ventana y ahi pasar los datos a tu JFrame original.

--
Oscar Giovanni Bilvao Silva
Servicios de Ingenieria Especializada

55 39 86 20
044 55 23 25 44 57

Javier Alfonso Bellota de Frutos

unread,
Jul 30, 2008, 7:12:55 AM7/30/08
to jav...@googlegroups.com
A lo mejor este ejemplo te ayuda:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;


public class P extends JFrame implements ActionListener {

    private JTable t;

    public P() {
        this.setLayout(new BorderLayout());
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // Los datos iniciales
        Object[][] o = {{"1a","1b"},{"2a","2b"}};
        String[] n = {"a","b"};
        // El modelo de la tabla (es quien guarda los datos)
        DefaultTableModel tm = new DefaultTableModel(o,n);
        //La tabla en sí, que muestra los datos del modelo.
        this.t = new JTable(tm);
        // Lo agregamos al JFrame
        this.add(t,BorderLayout.CENTER);
        // Creamos el botón que ejecuta el método de agregar
        JButton btn = new JButton("añadir");
        btn.addActionListener(this);
        this.add(btn,BorderLayout.SOUTH);
        this.pack();
    }
   
    public static void main(String[] args) {
        // Creamos el formulario y lo mostramos
        new P().setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        // Los datos que se van a insertar
        String[] o = {"3","4"};
        //Obtenemos el modelo de la tabla y agregamos la fila
        ((DefaultTableModel)this.t.getModel()).addRow(o);
        // Ajustamos la ventana a los nuevos tamaños.
        this.pack();
    }
}

Teli

unread,
Jul 31, 2008, 5:50:53 AM7/31/08
to JavaSOS
Bueno de momento lo he solucionado de la siguiente manera al crear el
segundo JFrame le paso el modelo del JTable y una vez insertado o
modificado el nuevo elemento en la base de datos pues acutalizo el
modelo desde el segundo JFrame
Supongo que no será la mejor manera de solucionarlo pero ahora mismo
es lo que se me ocurre.

Oscar lo que me dices no lo entiendo muy bien la verdad.
Y la soluciòn que me has dado Javier Alfonso, no es valido para lo
que yo quiero hacer ahi simplemente estás creando el JTable con su
modelo.

GRACIAS

On 30 jul, 13:12, "Javier Alfonso Bellota de Frutos"
> }- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

Javier Alfonso Bellota de Frutos

unread,
Aug 4, 2008, 10:53:15 AM8/4/08
to jav...@googlegroups.com
Lo que te indico en el ejemplo es como se crea la tabla para tener una referencia al modelo, que es el que se utiliza para modificar los datos de la tabla.

Así para modificarla, lo único que tienes que hacer es que el evento de cerrar la ventana (o al llamar al setVisible()) es obtener los datos y agregarlos mediante los métodos del modelo:

        // Los datos que se van a insertar
        String[] o = {"3","4"};
        //Obtenemos el modelo de la tabla y agregamos la fila
        ((DefaultTableModel)this.t.getModel()).addRow(o);

Eso sí, te recomiendo que en vez de un JFrame uses un JDialog (funciona iguál que el JFrame).
Reply all
Reply to author
Forward
0 new messages