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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [Solucionado] JAVA Como Refrescar JTable
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado] JAVA Como Refrescar JTable  (Leído 22,963 veces)
MiguelP

Desconectado Desconectado

Mensajes: 15


Ver Perfil
[Solucionado] JAVA Como Refrescar JTable
« en: 19 Marzo 2014, 17:32 pm »

Hola amigos buenos días tengo un gran problema al no poder refrescar mi JTable se que hay varios foros vídeos pero por mas que los aplico no me actualiza mi JTable espero puedan ayudarme, les explico un poco tengo en mi clase formulario mi JFrame con todos los controles y aparte mi clase modelo con los modelos que le adjunto al JTable para que de ahi pasen a mi formulario y lo pegue nada mas.Todo estaba bien hasta que ahora que quiero refrescar mi jtable no lo hace le hice seguimiento y llena mi modelo refrescarDatos pero al terminar con todos los datos cargados llega vació a mi jtable me bota el siguiente error : Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

aquí les dejo el código para que tengan una visión mas clara:

aquí lleno mi método de insertar datos y mi modelo para que se actualice al insertar los datos, están en un jdialog se llenan al presionar el botón aceptar:
Código:
info.InsertarDatosC(var1,var2,var3,varvalue1,varvalue2,varvalue3,vare1);
try {
DefaultTableModel modelo = new DefaultTableModel();
modelo = mod.refrescarDatos(opt);
table.setModel(modelo);
System.out.println(opt);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

Y este es mi modelo:


Código:
public DefaultTableModel refrescarDatos(String variable) throws SQLException {
DefaultTableModel modelotablabd = new DefaultTableModel();

for (String columna : man.LlenarTitulos(variable)) {
modelotablabd.addColumn(columna);
}


Statement sf = conn.getConnection().createStatement();
String cad = "select * from "+variable;
ResultSet rs = sf.executeQuery(cad);
ResultSetMetaData rsMd = rs.getMetaData();
int CantidadColumnas = rsMd.getColumnCount();

Object datos[]=new Object[CantidadColumnas];
try {
while (rs.next()) {
for (int i = 0; i <CantidadColumnas; i++) {
datos[i] = rs.getObject(i + 1);
System.out.println(datos[i]);
// System.out.println("fil : "+datos[i]);
}
modelotablabd.addRow(datos);

}
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
return modelotablabd;
}

No se si deba usar algo como un método aparte para actualizarla...si fuera así por favor como debería hacer.
Espero en verdad puedan ayudarme necesito ayuda con urgencia estaré al tanto saludos amigos.


« Última modificación: 20 Marzo 2014, 18:16 pm por MiguelP » En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: JAVA Como Refrescar JTable
« Respuesta #1 en: 19 Marzo 2014, 17:47 pm »

Hola,

Para poder brindar una mejor ayuda, por favor etiqueta tu código entre etiquetas GeSHi y coloca el rastreo de pila que te arroja printStackTrace().

Saludos.


En línea

MiguelP

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: JAVA Como Refrescar JTable
« Respuesta #2 en: 19 Marzo 2014, 17:51 pm »

ya lo hice amigo espero me puedas ayudar saludos
En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: JAVA Como Refrescar JTable
« Respuesta #3 en: 19 Marzo 2014, 18:07 pm »

Necesito el rastreo completo de pila no solamente el tipo de excepción. En el rastreo de pila te indica la causa, y la posible línea que lanza la excepción. Es muy importante el análisis de excepciones.

El rastreo de pila es parecido a ésto:

Código
  1.    Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not execute statement
  2.    at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123)
  3.    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
  4.    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
  5.    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
  6.    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:136)
  7.    at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:58)
  8.    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3067)
  9.    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3509)
  10.    at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:88)
  11.    at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:377)
  12.    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:369)
  13.    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:286)
  14.    at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:339)
  15.    at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52)
  16.    at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1234)
  17.    at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:404)
  18.    at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
  19.    at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
  20.    at pe.edu.unp.dao.LibroDAOI.guardar(LibroDAOI.java:39)
  21.    at pe.edu.unp.biblioteca.Biblioteca.main(Biblioteca.java:18)
  22.    Caused by: org.postgresql.util.PSQLException: ERROR: column "titul" of relation "libro" does not exist // AQUI LA CAUSA DE LA EXCEPCION!
  23.     Position: 79
  24.    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2161)
  25.    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1890)
  26.    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
  27.    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:559)
  28.    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417)
  29.    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:363)
  30.    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:133)
  31.    ... 15 more
  32.    Java Result: 1


PD: Primero tienes que agregar el modelo a la tabla, y a partir de ahí agregar los datos al modelo. Primero agrega un DefaultTableModel a tu tabla, y luego modifica el método refrescarDatos() para que reciba el modelo y le agregue las filas. Puede ser por esto que te lanza el NullPointerException.
« Última modificación: 19 Marzo 2014, 18:17 pm por Mitsu » En línea

MiguelP

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: JAVA Como Refrescar JTable
« Respuesta #4 en: 19 Marzo 2014, 18:29 pm »

Este es el rastro completo de la pila:


Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
   at formulario.JDialog.actionPerformed(JDialog.java:170)
   at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
   at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
   at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
   at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
   at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
   at java.awt.Component.processMouseEvent(Unknown Source)
   at javax.swing.JComponent.processMouseEvent(Unknown Source)
   at java.awt.Component.processEvent(Unknown Source)
   at java.awt.Container.processEvent(Unknown Source)
   at java.awt.Component.dispatchEventImpl(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(Unknown Source)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
   at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
   at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Window.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(Unknown Source)
   at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
   at java.awt.EventQueue.access$200(Unknown Source)
   at java.awt.EventQueue$3.run(Unknown Source)
   at java.awt.EventQueue$3.run(Unknown Source)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   at java.awt.EventQueue$4.run(Unknown Source)
   at java.awt.EventQueue$4.run(Unknown Source)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   at java.awt.EventQueue.dispatchEvent(Unknown Source)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.run(Unknown Source)


tambien he probado dandole :   table.setModel(form.refrescarDatos(opt));   y me da el mismo error.
En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: JAVA Como Refrescar JTable
« Respuesta #5 en: 19 Marzo 2014, 18:51 pm »

Hmm ese log no ayuda en nada. Lo que tienes aquí es un problema de nullabilidad de algún objeto, es decir, algún objeto no ha sido inicalizado y estás tratando de acceder a él. Si tienes un NullPointerException en el catch colócalo y vuelve a probar para ver si te da un rastreo de pila más específico.
En línea

MiguelP

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: JAVA Como Refrescar JTable
« Respuesta #6 en: 19 Marzo 2014, 20:26 pm »

era porque no le pasaba mi JTable a mi clase ya se la paso, pero ahora no me muestra nada se queda ahi no me ejecuta mi boton...alguna idea? ayudame porfa
En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: JAVA Como Refrescar JTable
« Respuesta #7 en: 19 Marzo 2014, 20:40 pm »

Ya ves, solo es cuestión de saber interpretar las Excepciones (te recomiendo leer sobre esto y sobre debug).

¿Dices que pulsas el botón y no pasa nada? Pega el código que tienes en el actionPerformed de tu botón para poder verlo.
En línea

MiguelP

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: JAVA Como Refrescar JTable
« Respuesta #8 en: 19 Marzo 2014, 22:01 pm »

Te explico :

Tengo mi clase formulario donde están ubicados todos mis controles la mayoría, he creado una clase JDialog que es una ventana que al seleccionar un radiobutton  y darle clic en aceptar (En la clase formulario) llamo a la clase JDialog lleno mi método JDialogdinamico le paso las variables y armo mi ventana donde me muestra campos para poder ingresarlos y realizar mi insert, hasta ahi todo bien hace lo que qiero me inserta n la base de datos perfecto, ahora el problema era como refresco mi JTable?pense en ponerle un select llenar mis filas y pasarselas al modelo, se llenan tengo mi objeto con los datos pero me salio el error de que no le pasaba la tabla ahora que se la paso no se muestra mi JDialog.

No se que pueda ser aqui te paso el codigo de mi boton aceptar formulario:

Código:
if(e.getSource()==btnAceptarM){
String tip="Alta de ",var="",opcion="",accion="",cod="";
ArrayList camps = new ArrayList();
//RadioButton Altaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
if(rbtAlta.isSelected()){
Ambc jd = new Ambc(tablabd);
if(variable.equals("Cliente")){
System.out.println("\n "+"Hola Cliente");
opcion="Cliente";
var="CLIENTE";
}
else if(variable.equals("Tasas")){
System.out.println("\n "+"Hola Tasas");
opcion="Tasas";
var="TASAS";
}
else if(variable.equals("Area")){
System.out.println("\n "+"Hola Area");
opcion="Area";
var="AREA";
}
jd.JdialogDianamico(var,opcion,tip,camps,accion);
}

Ahi ya llene mi Jdialogdinamico ahora te paso el codigo de mi boton aceptar de mi clase JDialog

Código:
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btnCancelarC){
this.dispose();
}

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

String  var1=ListaCaja.get(0).getText(),var2=ListaCaja.get(1).getText(),var3=ListaCaja.get(2).getText();
String  varvalue1=ListaCaja.get(0).getName(),varvalue2=ListaCaja.get(1).getName(),varvalue3=ListaCaja.get(2).getName();


if(ListaCaja.get(0).getText().isEmpty() || ListaCaja.get(1).getText().isEmpty() || ListaCaja.get(2).getText().isEmpty())
{
JOptionPane.showMessageDialog(null,"Se Requiere Llenar todos los Campos","Advertencia",JOptionPane.WARNING_MESSAGE);
}else{
switch(tipo){
case  "Alta de ":
info.InsertarDatosC(var1,var2,var3,varvalue1,varvalue2,varvalue3,vare1);
try {
DefaultTableModel model = new DefaultTableModel();
model = mod.refrescarDatos(opt);
table.setModel(model);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

Espero me puedas ayudar saludos.
En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: JAVA Como Refrescar JTable
« Respuesta #9 en: 19 Marzo 2014, 22:58 pm »

Hola, disculpa la demora. La verdad te entiendo poco (quizás soy un poco lerdo para entender xD). Según tengo entendido a partir de un JFrame quieres crear un JDialog para inserción de datos y luego esos datos mostrarlos en una JTable. ¿Estoy bien?

Bien primero debes saber que un JDialog debe tener un padre, que debe ser un JFrame o Frame (AWT). Así que quizás es por eso que no te lo muestra. Te coloco un par de códigos de lo que yo entiendo que quieres hacer:

JFrame:
Código
  1. public class GUI extends JFrame implements ActionListener {
  2.  
  3. public GUI() {
  4. // tus controles
  5. JButton btnAceptar = new JButton("Aceptar");
  6. btnAceptar.addActionListener(this);
  7. this.add(btnAceptar);
  8.  
  9. // configuracion del jframe, tamanio, setDefaultCloseOperation(int tipo),y setVisible(true) etc
  10. }
  11.  
  12. @Override
  13. public void actionPerformed(ActionEvent evt) {
  14. new Dialogo(this,true); // creamos el JDialog e indicamos que este JFrame sera su padre
  15. }
  16.  
  17. }

JDialog:
Código
  1. public class Dialogo extends JDialog {
  2.  
  3. public Dialogo(JFrame padre, boolean modal) {
  4. // JDialog necesita un padre, es decir siempre dependera de un JFrame o Frame (AWT)
  5. // aqui puedes usar 'padre' para obtener los valores que se han elegido en el
  6. // formulario (padre) para crer dinamicamente tu JDialog asi como tu quieres
  7. // creamos la tabla, le asignamos un modelo y le agregamos una fila
  8. JButton btnAceptar = new JButton("Insertar");
  9. JTable tblDatos = new JTable();
  10. tblDatos.setModel(modelo);
  11. btnAceptar.addActionListener(new ActionListener() {
  12. @Override
  13. public void actionPerformed(ActionEvent evt) {
  14. try {
  15. agregarFila(modelo);
  16. } catch(SQLException ex) { System.err.println(ex.getMessage()); }
  17. }
  18. });
  19. this.add(btnAceptar);
  20. this.add(tblDatos);
  21. }
  22.  
  23. public void agregarFila(DefaultTableModel modelo) throws SQLException {
  24.  
  25. Object[] data = null;
  26. Connection conexion = null;
  27. PreparedStatement estatuto = null;
  28. ResultSetMetadata resultmeta = null;
  29. String sql = "select * from TUTABLA;";
  30.  
  31. try {
  32. // recuperamos lo que hay en la base de datos
  33. conexion = Conexion.getConnection(); // Conexion es una clase que devuelve una conexion a la DB
  34. estatuto = conexion.preparedStatement();
  35. ResultSet rs = estatuto.executeQuery();
  36. resultmeta = rs.getMetadaData();
  37.  
  38. int columnas = resultset.getColumnCount();
  39. data = new Object[columnas];
  40.  
  41. while(rs.next()) {
  42. for(byte i=0; i<columnas; i++) {
  43. data[i] = resultmeta.getObject(i+1);
  44. }
  45. }
  46.  
  47. modelo.addRow(data);
  48. } catch(SQLException ex) { throw ex; }
  49. finally { if(conexion != null) conexion.close();
  50. }
  51.  
  52. }
  53. }


Esta sería la forma de a partir de un JFrame crear un JDialog y en éste crear una tabla. Saludos.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
{SOLUCIONADO} JTable me repite datos de un ResultSet {SOLUCIONADO}
Java
|Miguel| 4 6,514 Último mensaje 3 Marzo 2012, 19:26 pm
por Proteus1989
Refrescar JTABLE!!
Java
DarkGhetto22 6 21,611 Último mensaje 29 Noviembre 2013, 00:25 am
por viruzexe
Como refrescar los datos de un textarea sin refrescar toda la pagina.
Desarrollo Web
70N1 3 4,642 Último mensaje 1 Mayo 2012, 08:02 am
por Graphixx
Cómo seleccionar una fila de un JTable de Java
Java
soy_nicanor 5 10,763 Último mensaje 22 Enero 2015, 22:48 pm
por Usuario Invitado
¿Como hacer una resta en un jtable en java netbeans?
Java
Larry16 4 3,683 Último mensaje 3 Abril 2016, 22:31 pm
por Larry16
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines