Open Jframe with click on Jtable (Netbeans)

1

I am generating a Jtable that has several data, however I need to click on the first cell of each row to open a new Jframe, I have tried with events, but I can not generate it to work specifically there .... So I need to select Registration number (be 10 or 11) open a jframe and upload such data ....

public void llamarMuestra() throws SQLException{
tblDatos.setDefaultRenderer(Object.class, new Render());
    JButton btn1 = new JButton("Modificar");
    btn1.setName("modificar");


    JButton btn2 = new JButton();

    btn2.setIcon(new ImageIcon("/Vista/Vista.Imagenes/eliminar.jpeg"));
    btn2.setName("eliminar");



        conectar cc = new conectar();
        Connection cn = cc.conexion();
        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");
        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", "Modificar", "Eliminar"});
        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"), btn1, btn2});
                btn2.repaint();
            }
            tblDatos.setModel(modelo);
            tblDatos.getColumnModel().getColumn(0).setMaxWidth(0);
            tblDatos.getColumnModel().getColumn(0).setMinWidth(0);
            tblDatos.getColumnModel().getColumn(0).setPreferredWidth(0);

            modelo.fireTableDataChanged();

        } catch (SQLException e) {
            Logger.getLogger(TableroMuestraLOQ_Recepcionista_Beta.class.getName()).log(Level.SEVERE, null, e);
            System.out.println("error con tabla");
        }
    }

    
asked by Juan Pablo 01.10.2018 в 16:21
source

1 answer

1

You can add the following to the onClick event of the table, so that repeated forms are not created you should check if it is null, it would be like this:

 NewJFrame newJFrame;
/**
 * Creates new form MainFrame
 */
public MainFrame() {
    initComponents();

    jTable1.addMouseListener(new java.awt.event.MouseAdapter() {

        public void mouseClicked(java.awt.event.MouseEvent evt) {
            //obtener la fila
            int row = jTable1.getSelectedRow();
            //obtener la columna
            int i = jTable1.getSelectedColumn();
            //si la columna es la 1era
            if (i == 0) {
                DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
                String nro_registro = (String) model.getValueAt(row, i);
                if(newJFrame == null)
                    newJFrame = new NewJFrame(nro_registro);
                newJFrame.setVisible(true);
            }
        }

    });
}
    
answered by 01.10.2018 / 21:03
source