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

Actualizar jtable!!!

Estas en el tema de Actualizar jtable!!! en el foro de Java en Foros del Web. Quisiera saber como podria hacer para actualizar un JTABLE luego de haber modifacado los datos de una Base de Datos...........he intendado con varios metodos como: ...
  #1 (permalink)  
Antiguo 30/03/2012, 21:33
 
Fecha de Ingreso: marzo-2012
Mensajes: 1
Antigüedad: 12 años, 1 mes
Puntos: 0
Actualizar jtable!!!

Quisiera saber como podria hacer para actualizar un JTABLE luego de haber modifacado los datos de una Base de Datos...........he intendado con varios metodos como:

.repaint();
.updateui
.revalidate

todo esto la tabla, lo mas extrano es que tambien intentente con los metodos del DefaultTableModel y tampoco me actualiza la tabla....aca les dejo el codigo, gracias por todo:

Código:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.table.DefaultTableModel;
public class teoriasDatos extends JFrame implements ActionListener{

    private final String[] titulos = {"Id", "Teoria", "Autor", "Año", "Ciencia"};
    
    private JMenuBar barra;
    private JMenu archivo, edicion;
    private JMenuItem salir, buscar, modificar, eliminar;
    private DefaultTableModel dtm = new DefaultTableModel();
    private JTable tabla = new JTable(dtm);
    private JScrollPane scroll = new JScrollPane(tabla);
    conexion cn = new conexion();
    
    public teoriasDatos(){
        super("Teorias System");
        this.setLayout(null);
        this.setSize(900, 460);
        this.setResizable(false);
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        this.Objetos();
        this.setVisible(true);
    }
    
    
    
    public void Objetos(){
        barra = new JMenuBar();
        archivo = new JMenu("Archivo");
        edicion = new JMenu("Edicion");
        buscar = new JMenuItem("Buscar");
        modificar = new JMenuItem("Modificar");
        eliminar = new JMenuItem("Eliminar");
        salir = new JMenuItem("Salir");
        barra.add(archivo);
        barra.add(edicion);
        archivo.add(salir);
        edicion.add(buscar);
        edicion.add(modificar);
        edicion.add(eliminar);
        this.setJMenuBar(barra);

        
        dtm.setColumnCount(0);
        dtm.setColumnIdentifiers(titulos);
        dtm.setRowCount(0);
        
        try{
             ResultSet aux = cn.getSt().executeQuery("SELECT*FROM datos");
             while(aux.next()){
             
                 Object [] fila = {aux.getObject(1), aux.getObject(2), aux.getObject(3), 
                     aux.getObject(4), aux.getObject(5)};
                 dtm.addRow(fila);
             
             }
             
        }catch(SQLException ioe){
      JOptionPane.showMessageDialog(null, "Error al leer registro: " + ioe);
        }

        
        scroll.setBounds(0, 0, 900, 460);
        this.add(scroll);
        salir.addActionListener(this);
        buscar.addActionListener(this);
        modificar.addActionListener(this);
        eliminar.addActionListener(this);
        dtm.addTableModelListener(tabla);
        
    }
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==buscar){
            try{
                int i = Integer.parseInt(JOptionPane.showInputDialog("ID de la teoria a buscar"));
                ResultSet resultado = cn.buscar(i);
                tabla.changeSelection(i-1, i, false, false);
    
            }catch(Exception ioe){
                JOptionPane.showMessageDialog(null, "Deber un introducir el ID " +ioe);
            }
        }else if(e.getSource() == modificar){
            
            try{
                int i = Integer.parseInt(JOptionPane.showInputDialog("ID de la teoria a modificar"));
                ResultSet resultado = cn.buscar(i);
                if(resultado.next()){
                    String au = JOptionPane.showInputDialog("Autor");
                    String an = JOptionPane.showInputDialog("Año");
                    String cie = JOptionPane.showInputDialog("Ciencia");
                    
            cn.modificar(i, au, an, cie);
            
            //ACA ES DONDE ESTA MI PROBLEMA
            dtm.fireTableRowsInserted(i, i);
                }
            }catch(Exception ioe){
                JOptionPane.showMessageDialog(null, "Error al modificar datos: " +ioe);
            }
            
            
            
            
        }
        
    }

    
    
}
  #2 (permalink)  
Antiguo 31/03/2012, 04:24
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Actualizar jtable!!!

Hola:

Java no asocia automáticamente el DefaultTableModel a la base de datos, por lo que si modificas la segunda, el cambio no está en el primero, tienes que hacerlo tú desde código.

Si vas a modificar la base de datos tienes dos opciones

opcion 1) En el momento de modificar la base de datos, modifica también el DefaultTableModel con los mismos cambios.
opcion 2) Modifica la base de datos y vuelve a cargar el DefaultTableModel entero.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: jdbc, jtable, mysql
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 10:27.