.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) {
}
}