java – ¿por que no me toma la primera compra que realizo al iniciar sesión?

soy un estudiante y estoy haciendo mi primer proyecto, así que puede que el error que tenga sea de lo mas común pero pues no logro resolverlo, también es la primera pregunta que hago aquí.
Mi proyecto se basa en una tienda virtual, pero mi problema es que al iniciar sesión como cliente, la primera compra que haga no me la registra en la tabla de la remisión.
Lo primero que hago es una consulta SQL para llenar la tabla de los productos.

 public void LlenarTabla() {
    Connection con;
    PreparedStatement ps;
    ResultSet rs;
    Productos obj = new Productos();
    Conexion cn = new Conexion();
    Table modelo = new Table();
    try {

        String sql = ("SELECT * FROM productos");
        con = cn.getConnection();
        ps = con.prepareStatement(sql);
        rs = ps.executeQuery();

        modelo.addColumn("NOMBRE");
        modelo.addColumn("DESCRIPCION");
        modelo.addColumn("FOTO");
        modelo.addColumn("PRECIO");
        modelo.addColumn("CANTIDAD");

        while (rs.next()) {
            ImageIcon imageIcon = new ImageIcon(rs.getBytes(4));
            Object() filas = {rs.getString(2), rs.getString(3), imageIcon, rs.getString(5), rs.getString(6)};
            modelo.addRow(filas);
        }

    } catch (SQLException e) {
    }

    jTable1.setModel(modelo);
    jTable1.setRowHeight(100);

Luego de eso, le añado un mouseListener para poner el evento del MouseClicked, y el mouseclicked lo que hago es crear un arreglo llamado datos y en el guardo los datos de la fila a la que le hice click y se lo mando a la otra tabla la cual esta en factura con la sentencia Factura.modelo2.addRow(datos), los souts que se pueden ver no les hagan caso, solo los puse en muchas de las pruebas que hice para resolver este problema.

jTable1.addMouseListener(new MouseListener() {
        @Override
        public void mouseClicked(MouseEvent me) {

            try {
                fila = (jTable1.getSelectedRow() + 1);
                int filaseleccionada = jTable1.getSelectedRow();
                String datos() = new String(5);
                datos(0) = jTable1.getValueAt(filaseleccionada, 0).toString();
                datos(1) = jTable1.getValueAt(filaseleccionada, 1).toString();
                datos(2) = jTable1.getValueAt(filaseleccionada, 3).toString();
                datos(3) = jTable1.getValueAt(filaseleccionada, 4).toString();
                Factura.modelo2.addRow(datos);
                System.out.println(filaseleccionada);
                //obj.setCaso(fila);
                System.out.println(fila);
                obj1 = fila;
                descripcionproductos desc = new descripcionproductos();
                desc.setVisible(true);
            } catch (SQLException ex) {
                Logger.getLogger(pnlProductos.class.getName()).log(Level.SEVERE, null, ex);
            }

        }

        @Override
        public void mousePressed(MouseEvent me) {
            //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public void mouseReleased(MouseEvent me) {
            //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public void mouseEntered(MouseEvent me) {
            //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public void mouseExited(MouseEvent me) {
            //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }
    });
}

Luego ya en el apartado de factura creo la variable de modelo2 estatica (por que sino no me deja mandar el arreglo de datos)y lleno la tabla.

public static DefaultTableModel modelo2 = new DefaultTableModel();
public void LlenarTabla() {

 //model = this.modelo2;
    modelo2.addColumn("NOMBRE");
    modelo2.addColumn("DESCRIPCION");
    modelo2.addColumn("PRECIO");
    modelo2.addColumn("CANTIDAD");
    modelo2.addColumn("SUBTOTAL");
    jTable2.setModel(modelo2);
    //jTable2.setRowHeight(100);
}

Espero con ancias sus respuestas.