Sin datos en un jTable cuando añado un segundo jTable en un mismo jFrame

Verán, tengo un jFrame donde he puesto un jTabbedPane y dentro hay 3 jPanels. En el primer jPanel, he puesto un jTable para mostrar unos datos de la BD y ha ido todo bien.

private void cargarTablaAlumnos(String SQL){     try{         Connection con2 = ConexionDB.GetConnection();         Statement stmt2 = null;         ResultSet rs2 = null;          alumnosModel = new DefaultTableModel();         alumnosModel.setRowCount(0);         alumnosModel.addColumn("Alumno");         alumnosModel.addColumn("Profesor");         alumnosModel.addColumn("Clase");         alumnosModel.addColumn("Curso");         alumnosModel.addColumn("Fecha Alta");          stmt2 = con2.createStatement();         stmt2.executeUpdate(SQL);          this.SQL = "SELECT * FROM #tmp_alumnos";         rs2 = stmt2.executeQuery(this.SQL);          while(rs2.next()){             alumnosModel.addRow(new Object[]{rs2.getString("nombre_alumno"),rs2.getString("nombre_profesor"),rs2.getString("curso"),rs2.getString("codigo"), rs2.getString("fecha_alta")});         }          t_matricula_alumnos.setModel(alumnosModel);          rs2.close();         stmt2.close();         con2.close();     } catch(SQLException ex){         JOptionPane.showMessageDialog(null, ex.getMessage());     } }` 

`El problema es que al poner un segundo jTable en el segundo jPanel, deja de funcionarme el primer jTable y solo me funciona el segundo:

private void cargarTablaAsistenciaAlumnos(String SQL){     try{         Connection con2 = ConexionDB.GetConnection();         Statement stmt2 = null;         ResultSet rs2 = null;         GlobalProject.criterio = "Cursos.ConsultarAsistencia";         TableCellRenderer tcr = new TableCellRenderer();          alumnosAsistModel = new DefaultTableModel();         alumnosAsistModel.setRowCount(0);         alumnosAsistModel.addColumn("Alumno");         alumnosAsistModel.addColumn("Curso");         alumnosAsistModel.addColumn("Clase");         alumnosAsistModel.addColumn("Fecha");         alumnosAsistModel.addColumn("Asistio");          stmt2 = con2.createStatement();         rs2 = stmt2.executeQuery(SQL);          while(rs2.next()){             alumnosAsistModel.addRow(new Object[]{rs2.getString("nombre"),rs2.getString("codigo"),rs2.getString("curso"),rs2.getString("fecha"), rs2.getInt("asistio")});         }          t_asistenciaAlumnos.setDefaultRenderer(Object.class, tcr);         t_asistenciaAlumnos.setModel(alumnosAsistModel);         this.hideColumnFromTableAsistAlumnos(4);          rs2.close();         stmt2.close();         con2.close();     } catch(SQLException ex){         JOptionPane.showMessageDialog(null, ex.getMessage());     } } 

Después de darle muchas vueltas, he eliminado momentáneamente el segundo jTable, y al ejecutar … sorpresa! el primer jTable (el único que hay en todo el jFrame, ahora) me carga de nuevo los datos. Añado de nuevo el segundo jTable y deja de funcionar el primer jTable de nuevo para que ahora solo funcione el segundo jTable.

He puesto el debug y veo que alumnosModel contiene toda la informacion del rs2, pero al hacer t_matricula_alumnos.setModel(alumnosModel); no lo coge.

Es un bug? Es como si hubiera algún problema raro con los punteros de las tablas …

He probado con lo siguiente pero tampoco me ha funcionado.

t_matricula_alumnos.setModel(DbUtils.resultSetToTableModel(rs2)); 

En resumen, que solo puedo tener un JTable, si añado un segundo, el primero deja de cargar datos y se queda vació.

Gracias!

ajustar fila al tamaño del texto JTable Java

Estoy trabajando en una aplicación de escritorio donde ejecuto consultas de una base de datos MySQL y muestro los datos en un JTable (JAVA). En un principio el texto mostrado se cortaba según el ancho de la tabla, situación que pude resolver con el código que está disponible en esta página: https://tips4java.wordpress.com/2008/11/10/table-column-adjuster/

Sin embargo, en las consultas hay textos muy largos y al momento de ejecutar las consultas, las filas del JTable, son tan largas como el texto. He buscado en muchos foros la solución. Algunos mencionan que incluya un área de texto en cada columna, pero esa solución es más apropiada para datos estáticos o bien, calendarios. Quisiera saber si es posible mostrar datos en un JTable de modo que la tabla se ajuste al texto, es decir, que en lugar de mostrar una fila muy grande, muestre una fila con múltiples líneas.

introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí

¿Es posible ajustar el texto en un JTable?

El código que uso para la consulta el siguiente: (omití el código para mostrar todo el texto en una sola fila, en vista que es casi exactamente igual al de la página que mencione anteriormente: https://tips4java.wordpress.com/2008/11/10/table-column-adjuster/ )

  private ResultSet         resultadoConsulta; private PreparedStatement consultarDatos;     private PreparedStatement insertarDatos;  private final Conexion    conectarBasdeDatos;  private DefaultTableModel tituloResultadoBusqueda;  private DefaultTableModel setTitulosTabla(){         tituloResultadoBusqueda = new DefaultTableModel();         tituloResultadoBusqueda.addColumn("Nombre");         tituloResultadoBusqueda.addColumn("Fecha");         tituloResultadoBusqueda.addColumn("Información");         return tituloResultadoBusqueda;             }           public DefaultTableModel getResultado(int criterio){                                 String sqlBusqueda = "CALL CRITERIO('" + criterio +"')";                                      try {             setTitulosTabla();             consultarDatos = conectarBasdeDatos.getConnection().prepareStatement(sqlBusqueda);             resultadoConsulta=consultarDatos.executeQuery();                        Object[] fila = new Object[3];              while (resultadoConsulta.next()){             fila[0]= resultadoConsulta.getString(1);             fila[1]= resultadoConsulta.getString(2);             fila[2]= resultadoConsulta.getString(3);                       tituloResultadoBusqueda.addRow(fila);                 }     } catch (SQLException e) {           System.out.println ("Error al listar los datos : " + e.getMessage());             }      return tituloResultadoBusqueda;         }   

JTable применение сложного редактора

Подскажите пожалуйста. Имеется проблема следующего характера для столбца таблицы JTable применен редактор который в свою очередь возвращает объект JScrollPane (или любой другой контейнер) на нем находится объект JTextArea, так вот при редактировании с помощью клавиатуры невозможно ввести какое либо значение в JTextArea так как оно являясь вложенным объектом не получает фокус (требуется клик мышью). Каким образом можно передать фокус на вложенный объект?

public class PP extends JFrame {     private String data[][]=new String[][]{{"","",""},{"","",""}};     private String column[]=new String[]{"Фамилия","Имя","Отчество"};     public PP() throws HeadlessException {         super("Кадровая работа");         this.setDefaultCloseOperation(EXIT_ON_CLOSE);         this.setExtendedState(MAXIMIZED_BOTH);         this.setVisible(true);         JTable jTable=new JTable(data,column);         jTable.setRowHeight(40);         jTable.getColumnModel().getColumn(1).setCellEditor(new EditorJTA());         this.add(new JScrollPane(jTable));     }      private class EditorJTA extends AbstractCellEditor             implements TableCellEditor {         private JTextArea editor = new JTextArea();         private JScrollPane result=new JScrollPane(editor);          @Override         public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {             editor.setLineWrap(true);             editor.setWrapStyleWord(true);             editor.addKeyListener(new KeyAdapter() {                 @Override                 public void keyPressed(KeyEvent e) {                     if(e.getKeyCode()==KeyEvent.VK_ENTER)                     {                         stopCellEditing();                     }                 }             });             result.setBorder(new LineBorder(null, 0));             return result;         }          @Override         public Object getCellEditorValue() {             return editor.getText();         }     }     public static void main(String[] args) {         SwingUtilities.invokeLater(new Runnable() {             @Override             public void run() {                 new PP();             }         });     } } 

Como Colorear jTable, utilizando 2 columnas para las condiciones. Java-Netbeans-OracleSQL

Mi programa tiene un jTable Rellenada con datos de una base de datos de Oracle-SQL,

Utilizando: (por lo que entiendo solo puedo mandar una columna con este código)

jTable1.setDefaultRenderer(Object.class, new ColorearResaltar(4)); 

Selecciono la columna 4 de la tabla (Los datos de la columna 4 son fechas) , para ser evaluada mediante condiciones y así aplicarle un color u otro. Hasta aquí todo bien.

Pero ahora necesito que ademas de esto, se evalué la columna 5(Que también son fechas) del jTable, y también a ser utilizadas para las condiciones y aplicar un color u otro.

Con el código anterior puedo utilizar la columna 4, pero como poder utilizar la columna 4 pero también la 5 en mi clase ColorearResaltar?

Mi lógica me indica que tendría o bien pasar las dos columnas al mismo tiempo, o aplicar un “Estilo” y luego aplicarle encima otro. De ante mano gracias.

Codigo de la clase ColorearResaltar (Perdón si esta algo enredado el código)

public class ColorearResaltar extends DefaultTableCellRenderer {     private Component componente;     public final int columna_patron;     public ColorearResaltar(int Colpatron) {         columna_patron = Colpatron;      }   @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {     componente = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);      try {         //FECHA         Calendar fechaB = Calendar.getInstance();         Calendar fechaN = Calendar.getInstance();          String fechaa = (String)table.getValueAt(row,columna_patron);          int anioB = fechaB.get(Calendar.YEAR);         int mesB =(fechaB.get(Calendar.MONTH)+1);         int diaB = fechaB.get(Calendar.DATE);           String fechacompletaB = (Integer.toString(anioB))+"-"+(Integer.toString(mesB))+"-"+(Integer.toString(diaB));          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");         Date fechalimite = sdf.parse(fechaa);         Date fechaactual = sdf.parse(fechacompletaB);         fechaN.setTime(fechalimite);         fechaN.add(Calendar.DAY_OF_YEAR,-7);          java.util.Date fechaNaranja = fechaN.getTime();         if(isSelected && fechalimite.compareTo(fechaactual)<=0 || isSelected && fechaNaranja.compareTo(fechaactual)<=0 )         {             componente.setBackground(Color.decode("#47c7ff"));             componente.setForeground(Color.WHITE);          }else{               if(fechalimite.compareTo(fechaactual)<0)               {                   if(row %2==0){                     componente.setBackground(Color.decode("#f24141"));                     componente.setForeground(Color.BLACK);                     }else                      {                         componente.setBackground(Color.decode("#ff9e9e"));                         componente.setForeground(Color.BLACK);                       }             }else if(fechaNaranja.compareTo(fechaactual)<0){                     if(row %2==0){                      componente.setBackground(Color.decode("#f7af2a"));                     componente.setForeground(Color.BLACK);                     }else                       {                         componente.setBackground(Color.decode("#ffd891"));                         componente.setForeground(Color.BLACK);                        }                 }else{                  if(row %2==0){                 componente.setBackground(Color.decode("#afffaa"));                 componente.setForeground(Color.BLACK);                 }else{                 componente.setBackground(Color.decode("#62ff49"));                 componente.setForeground(Color.BLACK);                 }if(isSelected){                 componente.setBackground(Color.decode("#47c7ff"));                 componente.setForeground(Color.BLACK);                 }             }          }       } catch (ParseException ex) {         Logger.getLogger(ColorearResaltar.class.getName()).log(Level.SEVERE, null, ex);     }   return componente; 

}
}

JTable no se muestra en mi Jframe en java Swing!

Amigos, un gusto saludarlos espero y se encuentren de lo mejor estoy teniendo un problema al visualizar mi componente JTable cuando cargo ejecuto mi proyecto no se logra apreciar la tabla, miren este mi codigo:

JTable miTabla1 = new JTable(modelo);     JScrollPane miBarra = new JScrollPane(miTabla1);   this.getContentPane().add(jButtonContinuar, null);         //this.getContentPane().add(miTabla1, null);         this.getContentPane().add(miBarra, null);          //add(miBarra);         miBarra.setBounds(100, 300, 379, 130);         miBarra.setVisible(true);         miTabla1.setVisible(true);  DefaultTableModel modelo= (DefaultTableModel)miTabla1.getModel();    

Dentro del cuadro gris es donde quiero que se muestre mi JTable pero nomas no se muestra, por favor indiquen me que es lo que estoy haciendo mal por favor o si me falta algo que ponerle díganmelo, ya que con otros componentes como poner un botón si me lo hace, quedo al pendiente de sus comentarios y si me hace falta que no quede entendido con gusto lo pongo, saludos.

+

No se visualiza jTable con java Swing!

quería preguntarles si saben por que no se muestra mi JTable y sale un cuadro desfasado, lo que pasa es que la información la extraigo desde un archivo.json a la tabla, pero al hacer todo el procedimiento no se muestra, es este mi código:

private void jbInit() throws Exception {         this.setSize(new Dimension(500, 400));         jProgreso.setOrientation(JProgressBar.HORIZONTAL);         jProgreso.setBackground(Color.lightGray);         jProgreso.setVisible(false);         jProgreso.setEnabled(true);         jProgreso.setDoubleBuffered(false);         jProgreso.setMaximumSize(new Dimension(100, 25));         jProgreso.setMinimumSize(new Dimension(100, 25));         jProgreso.setOpaque(false);         jProgreso.setPreferredSize(new Dimension(100, 25));         jProgreso.setString("0%");         jProgreso.setStringPainted(true);         jProgreso.setBounds(new Rectangle(55, 318, 397, 33));         jLabelFileName.setFont(new java.awt.Font("Dialog", 0, 14));          jTAExplicacion.setBounds(new Rectangle(30, 30, 408, 82));         jTAExplicacion.setBorder(BorderFactory.createLoweredBevelBorder());         jTAExplicacion.setMaximumSize(new Dimension(300, 100));         jTAExplicacion.setMinimumSize(new Dimension(300, 100));         jTAExplicacion.setOpaque(false);         jTAExplicacion.setPreferredSize(new Dimension(300, 100));         jTAExplicacion.setRequestFocusEnabled(false);         jTAExplicacion.setEditable(false);         jTAExplicacion.setLineWrap(true);         jTAExplicacion.setWrapStyleWord(true);         jTAExplicacion.setText(EXPLICACION_PREVIA_A_IMP);         jTAExplicacion.setRows(5);         jTAExplicacion.setFocusable(false);         jTAExplicacion.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));          jTAMensajes.setBounds(new Rectangle(10, 235, 450, 68));         jTAMensajes.setBorder(BorderFactory.createLoweredBevelBorder());         jTAMensajes.setMaximumSize(new Dimension(300, 100));         jTAMensajes.setMinimumSize(new Dimension(300, 100));         jTAMensajes.setOpaque(false);         jTAMensajes.setPreferredSize(new Dimension(300, 100));         jTAMensajes.setRequestFocusEnabled(false);         jTAMensajes.setVisible(false);         jTAMensajes.setEditable(false);         jTAMensajes.setLineWrap(true);         jTAMensajes.setWrapStyleWord(true);         jTAMensajes.setText("Preparando la importacion");         jTAMensajes.setRows(3);         jTAMensajes.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));          jLabelFileName.setBounds(new Rectangle(31, 134, 200, 20));         jLabelFileName.setMaximumSize(new Dimension(80, 20));         jLabelFileName.setMinimumSize(new Dimension(80, 20));         jLabelFileName.setPreferredSize(new Dimension(80, 20));         jLabelFileName.setToolTipText("Indique el nombre del archivo a importar");         jLabelFileName.setText("Archivo a importar:");         jTextFieldFilename.setBounds(new Rectangle(32, 160, 325, 20));         jTextFieldFilename.setMaximumSize(new Dimension(200, 20));         jTextFieldFilename.setMinimumSize(new Dimension(200, 20));         jTextFieldFilename.setPreferredSize(new Dimension(200, 20));         jTextFieldFilename.setText("Nombre del Archivo a importar");         jButtonContinuar.setBounds(new Rectangle(119, 198, 100, 20));         jButtonContinuar.setMaximumSize(new Dimension(73, 25));         jButtonContinuar.setMinimumSize(new Dimension(81, 25));         jButtonContinuar.setToolTipText(             "Presione para continuar con la importacion de archivos");         jButtonContinuar.setActionCommand("jButtonContinuarAction");         jButtonContinuar.setMnemonic('C');         jButtonContinuar.setText("Continuar");         jButtonCancelar.setMnemonic('X');         jButtonCancelar.setText("Cancelar");         jButtonCancelar.setBounds(new Rectangle(265, 198, 100, 25));         jButtonCancelar.setMaximumSize(new Dimension(73, 25));         jButtonCancelar.setMinimumSize(new Dimension(81, 25));         jButtonCancelar.setToolTipText(             "Presione para salir de esta pantalla");          jButtonAbortar.setMnemonic('X');         jButtonAbortar.setText("Cancelar");         jButtonAbortar.setBounds(new Rectangle(200, 200, 100, 25));         jButtonAbortar.setMaximumSize(new Dimension(73, 25));         jButtonAbortar.setMinimumSize(new Dimension(81, 25));         jButtonAbortar.setToolTipText(             "Presione para cancelar la importacion de archivos");         jButtonAbortar.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));          jButtonFileChooser.setMnemonic('S');         jButtonFileChooser.setText("Seleccionar");         jButtonFileChooser.setBounds(new Rectangle(368, 160, 100, 25));         jButtonFileChooser.setMaximumSize(new Dimension(73, 25));         jButtonFileChooser.setMinimumSize(new Dimension(81, 25));         jButtonFileChooser.setToolTipText("Presione para seleccionar el archivo");          jButtonFileChooser.addActionListener(new FileChooserActionListener());         jButtonCancelar.addActionListener(new CancelListener());         jButtonAbortar.addActionListener(new CancelListener());         jButtonContinuar.addActionListener(new ProcesaImportacionListener());         this.getContentPane().setLayout(null);         this.getContentPane().add(jTAExplicacion);         this.getContentPane().add(jProgreso, null);         this.getContentPane().add(jTAMensajes, null);         this.getContentPane().add(jLabelFileName, null);         this.getContentPane().add(jTextFieldFilename, null);         this.getContentPane().add(jButtonFileChooser, null);         this.getContentPane().add(jButtonCancelar, null);         this.getContentPane().add(jButtonAbortar, null);         this.getContentPane().add(jButtonContinuar, null);          jProgreso.setVisible(false);         jButtonAbortar.setVisible(false);          add(miBarra);         miBarra.setBounds(27, 72, 379, 130);        }      private void construirTabla(){         setTitle("Json Importados");         String data [][]={};             String col[]={"TIPO EVENTO SIC","TIPO DERECHO COVACK",                         "ES_REGIMEN_FISCAL","ORIGEN_DERECHO",                          "NOTAS"};         modelo = new DefaultTableModel(data, col);//Ejemplo video           //miTabla1.setModel(model);           //miTabla1 = new JTable(informacion,titulos);           miBarra.setViewportView(miTabla1);         add(miBarra);         miBarra.setBounds(27, 72, 379, 130);     }   private void agregarValores(JSONObject json){            int cont = 0;         //if(modelo==null){             //miTabla1.setModel(modelo);                 System.out.println("ttttttttttttttttt");         //}           DefaultTableModel modelo= (DefaultTableModel)miTabla1.getModel();   //Aqui marca error             Vector row = new Vector();              //modelo.insertRow(0, new Object[]{});                       System.out.println("uuuuuuuuuuuuu..."+modelo);           //Inserción de valores obtenidos del Json             JSONObject retencion = (JSONObject)json.get("retencion");             JSONObject importeNeto = (JSONObject)json.get("importeNeto");               row.add(json.get("transaccion"));               row.add(json.get("fechaPago"));               row.add(json.get("creditoDebito"));               row.add(retencion.get("percent"));               row.add(importeNeto.get("amount"));               /*modelo.setValueAt(json.get("transaccion"), cont, 0);             modelo.setValueAt(json.get("fechaPago"), cont, 1);              modelo.setValueAt(json.get("creditoDebito"), cont, 2);             modelo.setValueAt(retencion.get("percent"), cont, 3);             modelo.setValueAt(importeNeto.get("amount"), cont, 4);*/              //modelo.setValueAt("0", cont, 0);             cont++;                  //Hasta aca             miTabla1.setModel(modelo);     }   private void agregarValores(JSONObject json){            int cont = 0;         //if(modelo==null){             //miTabla1.setModel(modelo);                 System.out.println("ttttttttttttttttt");         //}           DefaultTableModel modelo= (DefaultTableModel)miTabla1.getModel();   //Aqui marca error             Vector row = new Vector();              //modelo.insertRow(0, new Object[]{});                       System.out.println("uuuuuuuuuuuuu..."+modelo);           //Inserción de valores obtenidos del Json             JSONObject retencion = (JSONObject)json.get("retencion");             JSONObject importeNeto = (JSONObject)json.get("importeNeto");               row.add(json.get("transaccion"));               row.add(json.get("fechaPago"));               row.add(json.get("creditoDebito"));               row.add(retencion.get("percent"));               row.add(importeNeto.get("amount"));               /*modelo.setValueAt(json.get("transaccion"), cont, 0);             modelo.setValueAt(json.get("fechaPago"), cont, 1);              modelo.setValueAt(json.get("creditoDebito"), cont, 2);             modelo.setValueAt(retencion.get("percent"), cont, 3);             modelo.setValueAt(importeNeto.get("amount"), cont, 4);*/              //modelo.setValueAt("0", cont, 0);             cont++;                  //Hasta aca             miTabla1.setModel(modelo);     }   private void obtenerMatriz() {//JJ Metodo con el que estoy trabajando          JSONParser parser = new JSONParser();         try{             Object obj = parser.parse(new FileReader ("D:/Usuarios/JBustamante/Desktop/C0_2019-05-31_927837_0.json"));              System.out.println("Cadena completa json del archivo..." + obj);              JSONObject jsonObjectArchivo = (JSONObject)obj;//se guarda en la variable jsonObject la cadena json del archivo             Object objJson = jsonObjectArchivo.get("opciones");             if(objJson instanceof JSONArray){                 System.out.println("Esto es un array de opciones");                  JSONArray obj2 =  (JSONArray)objJson;                            System.out.println("Objsss...."+ obj2);                 //Recorremos en array, ya que sabemos su tamaño                    for(int i = 0; i< obj2.size();i++){ //Recorrido de transacciones                                JSONObject elementoItem =(JSONObject) obj2.get(i);                     JSONArray transacciones = (JSONArray)(elementoItem.get("transacciones"));                     for(int j = 0; j< transacciones.size();j++){                         JSONObject transaccionesItem =(JSONObject)transacciones.get(j);                         agregarValores(transaccionesItem);                     }                    }              }                    }catch(Exception e){                 e.printStackTrace();         }       } 

Lo desfasado quiero decir que cuando acabo de procesar toda la información me aparece como un cuadro encima de otro, la verdad soy muy nuevo con esta biblioteca de Swing y quería pedirles su ayuda en que puedo estar mal practicamente es la primera que me enfrento a un reto como esto, el codigo no marca error y solo quiero mandar la información a la tabla y que se muestre, posteriormente les dejo como se ve en la interfaz, ya he hecho otros post con este trabajo que estoy realizando, espero y puedan ayudarme por favor se los agradecería bastante, quedo al pendiente de sus comentarios saludos.

Dados são inserido no banco de dados porem nao atualiza no JTABLE

fiz minha tabela assim

private void tabela1MouseClicked(java.awt.event.MouseEvent evt) {                                          // TODO add your handling code here:     int indexrow= tabela1.getSelectedRow();      DefaultTableModel model = (DefaultTableModel)tabela1.getModel();     id=model.getValueAt(indexrow, 0).toString();     campoclasse.setText(model.getValueAt(indexrow, 1).toString());     camposetor.setText(model.getValueAt(indexrow, 2).toString());         }                                     

mas ao adicionar um novo objeto a tabela com o botao criar, o jtable nao atualizar, os dados são criados no banco de dados mas só atualiza o jtable se eu fechar e abrir novamente

private void btncriarActionPerformed(java.awt.event.ActionEvent evt) {                                              try {         // TODO add your handling code here:         PreparedStatement pst= conecta.con.prepareStatement("insert into classe (classe,setor) values(?,?) ");         pst.setString(1, campoclasse.getText());         pst.setString(2, camposetor.getText());         pst.executeUpdate();         JOptionPane.showMessageDialog(rootPane, "Criado com sucesso!");     } catch (SQLException ex) {         JOptionPane.showMessageDialog(rootPane, "Erro na inserção!\n Erro: "+ex);     } }                                         

PRINTS EM ORDEM: inserir a descrição da imagem aqui inserir a descrição da imagem aqui inserir a descrição da imagem aqui inserir a descrição da imagem aqui

Rellenar JTable con Arraylist de objetos que devuelve una consulta de MYSQL

Llevo unas semanas con un proyecto de clase y no consigo hacer que muestre la información en un JTable.

El caso es que tengo un método que recibe varios parámetros para hacer una consulta en mi base de datos, cuando se pulsa un JButton en la vista del programa, este devuelve un arraylist que quiero que me dibuje en un JTable. Cuando pulso el botón de buscar lo único que consigo es que me rellene las columnas del JTable pero no añade ninguna row con la información que devuelve la query a la base de datos.

Declaro del DefaultTableModel y las columnas del JTable

    public class Vista extends javax.swing.JFrame {      DefaultTableModel dtm;     Object columnas[] = {"ID LOCALIDAD", "NOMBRE", "ID PROVINCIA", "INDICATIVO", "INDI. SINÓPTICO", "LATITUD"         + "LONGITUD", "ALTITUD", "FECHA", "TEMPERATURA", "TEMP. MÁX.", "TEMP. MÍN.", "HUMEDAD", "PRESION", "PRESION MAR"         + "PRECIPITACIÓN", "GRANIZO", "VEL. MÁX. VIENTO", "VEL. MEDIA VIENTO", "DIR. VIENTO", "INSOLACION", "NIEVE"}; 

Y este es el action performed del JButton:

private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {                                                dtm = new DefaultTableModel();      dtm.setColumnIdentifiers(columnas);      Date date = new Date();     date = dtcInicio.getDate();     Timestamp tsInicio = new Timestamp(date.getTime());     Date date2 = new Date();     date2 = dtcFin.getDate();     Timestamp tsFin = new Timestamp(date2.getTime());      ArrayList<Observacion> observaciones = ObservacionCRUD.findByFechasYestacion((String) cmbEstaciones.getSelectedItem(),             tsInicio, tsFin);      for (int i = 0; i < observaciones.size(); i++) {          dtm.addRow(new Object[]{             observaciones.get(i).getEstacion().getIdLocalidad(),             observaciones.get(i).getEstacion().getIdLocalidad().getNombre(),             observaciones.get(i).getEstacion().getIdLocalidad().getIdProvincia(),             observaciones.get(i).getEstacion().getIndicativo(),             observaciones.get(i).getEstacion().getIndicativoSinoptico(),             observaciones.get(i).getEstacion().getLatitud(),             observaciones.get(i).getEstacion().getLongitud(),             observaciones.get(i).getEstacion().getAltitud(),             observaciones.get(i).getObservacionPK().getFecha(),             observaciones.get(i).getTemperatura(),             observaciones.get(i).getTemperaturaMax(),             observaciones.get(i).getTemperaturaMin(),             observaciones.get(i).getHumedadRelativa(),             observaciones.get(i).getPresion(),             observaciones.get(i).getPresionMar(),             observaciones.get(i).getPrecipitacion(),             observaciones.get(i).getPrecipitacionSolida(),             observaciones.get(i).getVelocidadMax(),             observaciones.get(i).getVelocidadMedia(),             observaciones.get(i).getDireccionViento(),             observaciones.get(i).getInsolacion(),             observaciones.get(i).getNieve()});      }      tablaResultados.setModel(dtm);   }