show JTable based on selection JComboBox

0

I am developing a small application that fills me with a JComboBox based on a ResultSet. But I can not get it to show me a JTable with the results of a select *. To fill the JTable, I am using a mouse event so that when I select the table the JTable with the results will automatically appear. This would be the window:

If I now select a table from the clinical BD, the JTable with the results should appear in the panel below. attached source of my MouseListener and method fullTable:

Full methodTable:

public void llenarTablaResultados() throws ClassNotFoundException, SQLException{
    modelo = new DefaultTableModel();
    jtTablaResultados = new JTable();

    jpTabla.add(jtTablaResultados);

    Object bdSeleccionada = jcBD.getSelectedItem();
    Object tablaSeleccionada = jcTablas.getSelectedItem();
    MySQL.conecta("jdbc:mysql://localhost:3306/" + bdSeleccionada , "root", "1234");
    MySQL.ejecutaConsulta("select * from " + tablaSeleccionada);
    ResultSet rs = MySQL.getRs();

    String[] cabecera = MySQL.getCabecera(rs);
    Object[][] datos;

    datos = MySQL.getDatos(rs);


    modelo = new DefaultTableModel(datos, cabecera);
    jtTablaResultados.setModel(modelo);

    scrollpane = new JScrollPane(jtTablaResultados,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

    scrollpane.add(jtTablaResultados);
    scrollpane.setBounds(90, 50, 700, 300);
    scrollpane.setVisible(true);

    jtTablaResultados.setVisible(true);
    jtTablaResultados.setBounds(90, 50, 700, 300);
}

MouseListener

@Override
public void mouseClicked(MouseEvent e) {
    jcTablas.removeAllItems();
    Object tablaSeleccionada = jcTablas.getSelectedItem();
    try {
        llenarComboTablas();


        if(jcTablas.getSelectedItem() == tablaSeleccionada){
            llenarTablaResultados();
        }

    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, "Error en la consulta");
    } catch (ClassNotFoundException ex) {
        JOptionPane.showMessageDialog(null, "No se encuentra la clase");
    }
}

@Override
public void mousePressed(MouseEvent e) {}

@Override
public void mouseReleased(MouseEvent e) {}

@Override
public void mouseEntered(MouseEvent e) {}

@Override
public void mouseExited(MouseEvent e) {}
    
asked by daviserraalonso 08.04.2018 в 12:42
source

1 answer

1

use this method of filling out a table (you should replace the data)

    DefaultTableModel modelo = new DefaultTableModel();
    JTable tabla = new JTable(modelo);
            String query = ("SELECT m.idMuestras, m.nregistro, c.nombrecliente, m.matriz, m.fechaingresolaboratorio, m.laboratorioejecutante, m.estado "
          + "FROM muestras m "
//          + "INNER JOIN analisis a ON m.idMuestras = a.fk_idmuestras"
          + "INNER JOIN clientes c ON m.fk_idcliente = c.idClientes");  //CONSULTA SQL
            PreparedStatement pst = cn.prepareStatement(query);
            ResultSet ResultSet = pst.executeQuery();
            modelo.setColumnIdentifiers(new Object[]{"ID Muestras", "Numero Registro", "Cliente", "Matriz", "Analisis" , "Ingreso Laboratorio","Laboratorio Ejecutante","Estado"}); // CON ESTO LLENAMOS EL ENCABEZADO
            System.out.println("INGRESO");
            try {
                while(ResultSet.next()){
                        int a = ResultSet.getInt("m.idMuestras");


                        modelo.addRow(new Object[]{ResultSet.getInt("m.idMuestras"), ResultSet.getInt("m.nregistro"), ResultSet.getString("c.nombrecliente"),
                            ResultSet.getString("m.matriz"), Listaanalisis(a), ResultSet.getDate("m.fechaingresolaboratorio"),
                            ResultSet.getString("m.laboratorioejecutante"), ResultSet.getString("m.estado")});  // CON ESTO SE CARGAN LOS REGISTROS EN LA TABLA CORRESPONDIENTE A LA CONSULTA SQL
                }
                tblDatos.setModel(modelo);

    } catch (SQLException e) {
        Logger.getLogger(TableroMuestraLOQ_Recepcionista_Beta.class.getName()).log(Level.SEVERE, null, e);
        System.out.println("error con tabla");
    }
    
answered by 04.09.2018 в 21:53