elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Refrescar JTABLE!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Refrescar JTABLE!!  (Leído 21,546 veces)
DarkGhetto22

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Refrescar JTABLE!!
« en: 1 Abril 2012, 14:50 pm »

Quisiera saber como podría hacer para actualizar un JTABLE luego de haber modificado los datos de una Base de Datos...........he intentado con varios métodos como:

.repaint();
.updateui
.revalidate

todo esto la tabla, lo mas extrano es que también intendente con los métodos del DefaultTableModel y tampoco me actualiza la tabla....acá les dejo el código, gracias por todo:



Código:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
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;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;

public class teoriasDatos extends JFrame implements ActionListener, TableModelListener{

    private final String[] titulos = {"Teoria", "Autor", "Año", "Ciencia", "Id"};
   
    private JMenuBar barra;
    private JMenu archivo, edicion;
    private JMenuItem salir, buscar, modificar, eliminar, seleccionar;
    private DefaultTableModel dtm = new DefaultTableModel();
    private JTable tabla = new JTable(dtm);
    private JScrollPane scroll = new JScrollPane(tabla);
   
    private List<Integer> lista = new ArrayList<Integer>();
    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");
        seleccionar = new JMenuItem("Seleccionar");
        salir = new JMenuItem("Salir");
        barra.add(archivo);
        barra.add(edicion);
        archivo.add(salir);
        edicion.add(buscar);
        edicion.add(modificar);
        edicion.add(eliminar);
        edicion.addSeparator();
        edicion.add(seleccionar);
        this.setJMenuBar(barra);

       
        dtm.setColumnCount(0);
        dtm.setRowCount(0);
        dtm.fireTableDataChanged();
        dtm.setColumnIdentifiers(titulos);
        lista.clear();
       
        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)};
                 lista.add((Integer)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);
        seleccionar.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");

                    if(au.isEmpty()){
                        JOptionPane.showMessageDialog(null, "Debes rellenar todos los campos");
                       
                    }else if(an.isEmpty()){
                        JOptionPane.showMessageDialog(null, "Debes rellenar todos los campos");
                    }else if(cie.isEmpty()){
                        JOptionPane.showMessageDialog(null, "Debes rellenar todos los campos");
                    }else{
                      cn.modificar(i, au, an, cie);

                    }
                }
            }catch(Exception ioe){
                JOptionPane.showMessageDialog(null, "Error al modificar datos: " +ioe);
            }

           
        }else if(e.getSource() == eliminar){
            this.delectRows(tabla.getSelectedRows());
            tabla.clearSelection();
           
        }else if(e.getSource() == seleccionar){
            tabla.selectAll();
        }
       
    }
   
    public void delectRows(int[] rowSelected){
        for (int i = 0; i<rowSelected.length; i++){
            String query = "DELETE FROM datos WHERE IDE="+lista.get(rowSelected[i]);
            try{
                cn.getSt().executeUpdate(query);
            }catch(SQLException sqle){
                JOptionPane.showMessageDialog(null, "Error al eliminar teoria " +sqle);
            }
        }
    }

    public void tableChanged(TableModelEvent tme) {
       
    }
   
       
}


En línea

visualfree

Desconectado Desconectado

Mensajes: 201


Ver Perfil
Re: Refrescar JTABLE!!
« Respuesta #1 en: 1 Abril 2012, 20:03 pm »

crea un metodo mostrarDatos() o como quieras y vuelve a llamarlo....

osea cada vez que presiones el boton agregar llama a mostrarDatos()....

Saludos


En línea

sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: Refrescar JTABLE!!
« Respuesta #2 en: 2 Abril 2012, 02:04 am »

deberias comensar por no intentar cualquier cosa sin sentido sin saber lo que haces

primero lo limpias con setRownCount(0) y luego lo buelves a llenar
En línea

viruzexe

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Refrescar JTABLE!!
« Respuesta #3 en: 26 Noviembre 2013, 19:42 pm »

Una pregunta.. me encuentro antes el mismo dilema, lograste solucionarlo con el RowCount(0)? o usaste algun updateui o algo así. Podrias giuarme? lo agradeceria
En línea

Zoik

Desconectado Desconectado

Mensajes: 91


Ver Perfil
Re: Refrescar JTABLE!!
« Respuesta #4 en: 26 Noviembre 2013, 21:39 pm »

Este tema es la ostia de viejo no revivas temas, aun así como soy buena persona...

Para borrar las rows de el modelo:

Código
  1. int sizeModel = dtm.getRowCount();
  2.  
  3.    for (int i = 0; i < sizeModel ; i ++) {
  4.     dtm.removeRow(0);
  5.    }
  6.  

Una vez borradas las row, simplemente ejecuta de nuevo la consulta a la BBDD.
Espero haber ayudado.

Un saludo
En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Refrescar JTABLE!!
« Respuesta #5 en: 26 Noviembre 2013, 22:23 pm »

Esto ya merece un ban. ¿Pero es que no tienes sentido común?. Este tema tiene más de 1 año de antigüedad, ¿por qué no creas uno nuevo?
En línea

viruzexe

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Refrescar JTABLE!!
« Respuesta #6 en: 29 Noviembre 2013, 00:25 am »

jajaja Gracias Zoik! pues lo probaré para checarlo, el problema son los renderer *****, pos eso no me quiero meter en esos pedos. mejor hago lo que dices, borro las filas del modelo y lo vuelvo a cargar con el resultSet.

y Mitsu, es porque era Simplemente el mismo problema, la lógica decía que no me contestarían pero Vualá! gracias a ambos por tomarse el tiempo.

: )
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Refrescar un DBgrid
Programación Visual Basic
polodimar 2 3,037 Último mensaje 16 Junio 2005, 23:35 pm
por soplo
Refrescar un formulario en C#
.NET (C#, VB.NET, ASP)
Azuela 4 18,636 Último mensaje 2 Marzo 2012, 02:55 am
por Azuela
Como refrescar los datos de un textarea sin refrescar toda la pagina.
Desarrollo Web
70N1 3 4,591 Último mensaje 1 Mayo 2012, 08:02 am
por Graphixx
Ayuda refrescar php
Desarrollo Web
ime 8 3,637 Último mensaje 12 Febrero 2013, 16:29 pm
por ime
[Solucionado] JAVA Como Refrescar JTable « 1 2 »
Java
MiguelP 17 22,819 Último mensaje 22 Marzo 2014, 21:32 pm
por Debci
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines