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

Problema con DefaultTableModel

Estas en el tema de Problema con DefaultTableModel en el foro de Java en Foros del Web. Estoy leyendo datos desde una base de datos en mysql para mostrarlos en una tabla en la aplicacion de java, la lectura la hace perfecta ...
  #1 (permalink)  
Antiguo 14/07/2011, 15:17
Avatar de kannonnr  
Fecha de Ingreso: junio-2011
Ubicación: Pasto
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 1
Exclamación Problema con DefaultTableModel

Estoy leyendo datos desde una base de datos en mysql para mostrarlos en una tabla en la aplicacion de java, la lectura la hace perfecta y tambien lo muestra perfecto en la tabla, pero vuelvo a presionar el boton para una nueva busqueda y al momento demostrar, lo hace incluyendo los datos que habia mostrado anteriormente, obviamente deberia mostrar los daros de la nueva busqueda.

Aqui dejo el codigo para saber si alguien me puede ayudar con este problema, de ante mano, muchas gracias:

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.table.DefaultTableModel;
import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;

public class Biblioteca extends JFrame implements ActionListener
{
/////////////////////Objetos de Interfaz de Usuario//////////////////////////////////////////

JPanel p1=new JPanel(null);
JPanel p2=new JPanel(null);
JPanel p3=new JPanel(null);

JPanel pes1=new JPanel(null);
JPanel pes2=new JPanel(null);

Color c1=new Color(165,196,145);

JTabbedPane pest =new JTabbedPane();

JLabel l1=new JLabel(new ImageIcon("banner1.gif"));
JScrollPane j1= new JScrollPane(l1);

///////////////////////////Objetos del programa en sí/////////////////////////////////////////
////pestaña 1

JLabel l2=new JLabel("Titulo del Libro");
JLabel l2_1=new JLabel("Nombre de Autor");
JTextField t2=new JTextField();
JTextField t2_1=new JTextField();
JButton b2=new JButton("Buscar");
JButton b2_1=new JButton("Buscar");
//JTextArea a2=new JTextArea();
//JTextArea a2_1=new JTextArea();

DefaultTableModel modelo1 = new DefaultTableModel();
JTable tabla1 = new JTable(modelo1);
JScrollPane jsp1 =new JScrollPane(tabla1);
DefaultTableModel modelo2 = new DefaultTableModel();
JTable tabla2 = new JTable(modelo2);

JPanel pes1_2=new JPanel(null); //busqueda por titulo
JPanel pes1_2_1 =new JPanel(null); //busqueda por titulo
JPanel pes1_3=new JPanel(null); //busqueda por autor
JPanel pes1_3_1=new JPanel(null); //busqueda por autor
JTabbedPane pes1_1 =new JTabbedPane();//panel de pestaña

////pestaña 2

JLabel l3=new JLabel("Nombre de Estudiante");
JLabel l3_1=new JLabel("Nombre de Libro");
JTextField t3=new JTextField();
JTextField t3_1=new JTextField();
JButton b3=new JButton("Devolver");
JPanel pes2_2_1 =new JPanel(null);

public Biblioteca()
{
setTitle("::::Biblioteca I.E. ITA Candelilla::::");
setSize(615,350);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setContentPane(p3);

///////////////Objetos agragados a pestaña 1 ( pes1 )//////////
pes1_2_1.setBackground(c1);
pes1_2_1.setBounds(0,0,610,300);
pes1_2_1.add(l2); l2.setBounds(10,10,100,20);
pes1_2_1.add(t2); t2.setBounds(115,10,350,20);
pes1_2_1.add(b2); b2.setBounds(480,5,100,30);
pes1_2_1.add(jsp1); jsp1.setBounds(10,50,580,125); //a2.setEditable(false);
//pes1_2_1.add(a2); a2.setBounds(10,50,580,125); a2.setEditable(false);
pes1_3_1.setBackground(c1);
pes1_3_1.setBounds(0,0,610,300);
pes1_3_1.add(l2_1); l2_1.setBounds(10,10,100,20);
pes1_3_1.add(t2_1); t2_1.setBounds(115,10,350,20);
pes1_3_1.add(b2_1); b2_1.setBounds(480,5,100,30);
pes1_3_1.add(tabla2); tabla2.setBounds(10,50,580,125); //a2.setEditable(false);//////
//pes1_3_1.add(a2_1); a2_1.setBounds(10,50,580,125); a2.setEditable(false);//////

//modelo1.addColumn("id");
modelo1.addColumn("CODIGO");
modelo1.addColumn("NOMBRE");
modelo1.addColumn("AUTOR");
modelo1.addColumn("AÑO DE PUBLICACION");
modelo1.addColumn("EDITORIAL");
modelo1.addColumn("CANTIDAD");
modelo1.addColumn("MATERIA");
modelo1.addColumn("PRESTAMOS");

//modelo2.addColumn("id");
modelo2.addColumn("CODIGO");
modelo2.addColumn("NOMBRE");
modelo2.addColumn("AUTOR");
modelo2.addColumn("AÑO DE PUBLICACION");
modelo2.addColumn("EDITORIAL");
modelo2.addColumn("CANTIDAD");
modelo2.addColumn("MATERIA");
modelo2.addColumn("PRESTAMOS");

pes1_2.add(pes1_2_1);
pes1_3.add(pes1_3_1);
pes1_2.setBackground(c1);
pes1_3.setBackground(c1);
pes1_1.addTab("Titulo", null, pes1_2, "Busqueda por Titulo");
pes1_1.addTab("Autor", null, pes1_3, "Busqueda por Autor");
pes1_1.setBounds(0,0,610,350);
pes1.add(pes1_1);

///////////////Objetos agragados a pestaña 2 ( pes2 )//////////
pes2_2_1.setBounds(0,0,610,300);
pes2_2_1.add(l3); l3.setBounds(10,10,40,20);

pes2.add(pes2_2_1);
pes2.setBounds(0,0,610,350);
//pes1.add(pes1_1);

////////////////////Paneles de pestañas////////////////////////
///pes1 pestaña 1
///pes2 pestaña 2
///pest guarda todas las pestañas
///p2 guarda a pest
///p1 guarda banner
///p3 guarda p1 y p2

pes1.setBackground(c1);
pes2.setBackground(c1);

p1.setBounds(0,0,610,90);
p1.add(j1);j1.setBounds(0,0,610,90);

pest.addTab("Buscar", null, pes1, "Busqueda de libros y registro de prestamos");
pest.addTab("Devolucion", null, pes2, "segundo panel");

p2.setBounds(0,81,610,350);
pest.setBounds(0,0,610,350);

p2.add(pest);

p3.add(p2); p3.add(p1);

b2.addActionListener(this);
}

public void actionPerformed(ActionEvent e){

if(e.getSource()==b2){

try{
Class.forName("com.mysql.jdbc.Driver");
Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost/biblioteca", "root", "bosatzu");
Statement st = conexion.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM libros");
while(rs.next()){
Object [] fila = new Object[8]; // Hay tres columnas en la tabla
for (int i=0;i<8;i++)
fila[i] = rs.getObject(i+1); // El primer indice en rs es el 1, no el cero, por eso se suma 1.


modelo1.addRow(fila);
}
rs.close();
}
catch(Exception ee){
JOptionPane.showMessageDialog(null,"Imposible Realizar Busqueda","Estado de Conexión",JOptionPane.ERROR_MESSAGE);
}
}
}

public static void conectar(){
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost/biblioteca", "root", "bosatzu");
conexion.close();
}
catch(Exception e){
JOptionPane.showMessageDialog(null,"Error en Conexion!!!","Estado de Conexión",JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}

public static void main(String[] args){

conectar();

JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
Biblioteca c1=new Biblioteca();
c1.setVisible(true);
JOptionPane.showMessageDialog(null,"Conexion Exitosa!!!","Estado de Conexión",JOptionPane.INFORMATION_MESSAGE);
}

}
__________________
Bosatzu Kannon
Keep Moving Forward
  #2 (permalink)  
Antiguo 14/07/2011, 18:49
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Problema con DefaultTableModel

Trata con lo siguiente antes de realizar una busqueda:
((DefaultTableModel) tuTabla.getModel()).getDataVector().removeAllEleme nts();

Tambien haciendo:
DefaultTableModel.setRowCount(0)
en el modelo funcionará

o
DefaultTableModel.setDataVector(null,headers);

xD Hay varias formas
  #3 (permalink)  
Antiguo 15/07/2011, 14:45
 
Fecha de Ingreso: junio-2011
Mensajes: 14
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Problema con DefaultTableModel

tambien puedes poner

modelo1 = null;

antes de volver a cargar;

y reiniciar tu modelo = new DefaultTableModel();

Etiquetas: jframe, mysql, sql
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 20:45.