IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Système de gestion des utilisateurs dans une application en Java


Sujet :

Java

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 35
    Points : 17
    Points
    17
    Par défaut Système de gestion des utilisateurs dans une application en Java
    Je développe une application de gestion commerciale en Java .J'aimerais y intégrer un système de gestion des utilisateurs avec groupe. En effet chaque utilisateur appartient à un groupe il y'a plusieurs groupe Administrateur, commerciaux, comptable..etc. Par conséquent chaque utilisateur connecté doit être identifié et les manipulation qu'il pourra effectuer seront stockées en quelque sorte. On pourra savoir quel utilisateur à créer tel client, quel utilisateur à réaliser tel facture ou tel état ou tel ou telle suppression c'est en gros à ça que doit me servir mon système de gestion d'utilisateur. J'aimerais vraiment avoir votre aide comment gérer ma connexion et ma classe utilisateur pour qu'elle puisse prendre en compte ce type de système de gestion des utilisateurs.
    L'ID utilisateur est une clé étrangère dans ma table client lors de l'insertion d'un nouveau client je ne sais pas comment m'y prendre. sérieusement je suis bloqué et j'arrive pas à avancé.
    Voici le code source de ma fenêtre connexion ainsi que la classe qui gère cette connexion
    parametre.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    package entite;
     
    public class Parametres {
    	private String nomUtilisateur;
    	private String motDePasse;
    	private String url;
     
    	public Parametres(){
    		nomUtilisateur = "root";
    		motDePasse = "Meuguiwarano2014";
    		url = "jdbc:mysql://localhost/swecombd";
    	}
     
    	public String getNomUtilisateur() {
    		return nomUtilisateur;
    	}
    	public void setNomUtilisateur(String nomUtilisateur) {
    		this.nomUtilisateur = nomUtilisateur;
    	}
    	public String getMotDePasse() {
    		return motDePasse;
    	}
    	public void setMotDePasse(String motDePasse) {
    		this.motDePasse = motDePasse;
    	}
    	public String getUrl() {
    		return url;
    	}
    	public void setUrl(String url) {
    		this.url = url;
    	}
     
     
    }
    controleconnexion.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
    package controle.connection;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
     
     
     
    import entite.Parametres;
     
    import javax.swing.JOptionPane;
     
    public class ControleConnexion {
    	// Les propriétés
    	static Parametres lesParametres;
        static boolean etatConnexion;
        static Connection laConnectionStatique;
        static{
        	boolean ok = true;
        	lesParametres = new Parametres();
        	try {
        		Class.forName("com.mysql.jdbc.Driver");
    			etatConnexion = true;
    		} catch (ClassNotFoundException e) {
    		  JOptionPane.showMessageDialog(null, "Classe non trouvés pour le chargement" +
    		  		"du pilotes mySql", "ALERTE" , JOptionPane.ERROR_MESSAGE);
    		  ok = false;
    		  etatConnexion = false;
    		}
        	// Etablissement de la connection
        	//---------------------------------
        	if(ok == true){
        		try{
        			// Récupération des paramètres présents dans la classe paramètres
        			String url = lesParametres.getUrl();
        			String nomUtilisateur = lesParametres.getNomUtilisateur();
        			String MDP = lesParametres.getMotDePasse();
        			// Création d'une connection contenant les paramètres
        			laConnectionStatique = (Connection) DriverManager.getConnection(url, nomUtilisateur, MDP);
        			etatConnexion = true;
        		}catch (Exception e){
        			JOptionPane.showMessageDialog(null, "Impossible de se connecter à la " +
        					"bases de données", "ALERTE", JOptionPane.ERROR_MESSAGE);
        			etatConnexion = false;
        		}
        	}
        }
        // Constructeurs
        public ControleConnexion(){
     
        }
     
        public ControleConnexion(int choix){
     
        }
     
        // Methodes 
        // Les accesseurs
     
    	public static Parametres getParametres() {
    		return lesParametres;
    	}
     
    	public static boolean getControleConnexion() {
    		return etatConnexion;
    	}
     
    	public static Connection getConnexion() {
    		return laConnectionStatique;
    	}
     
       // Les autres méthodes
    	// Contôles des paramètres saisie par l'utilisateur
     
    	public static boolean controle(String Nom, String MotDePasse){
    		//1. Vérification de la saisie
    		boolean verificationSaisie;
    		if(Nom.equals(lesParametres.getNomUtilisateur())
    			&& MotDePasse.equals(lesParametres.getMotDePasse())){
    			verificationSaisie = true;
    		}else{
    			JOptionPane.showMessageDialog(null, "Login et / ou Mot de Passe Incorrects " + '\n'+
    					" SVP Veuillez Réessayez","ERREUR", JOptionPane.ERROR_MESSAGE);
    			verificationSaisie = false;
    		}
    		return verificationSaisie;
    	}
    	// Methode pour fermer la connexion à la fin de l'éxécution de l'application
    	public static void fermetureSession(){
    		try{
    			laConnectionStatique.close();
    		}catch(SQLException e){
    			JOptionPane.showMessageDialog(null, "Problème rencontré à la fermeture" +
    					"de la connexion", "ERREUR",JOptionPane.ERROR_MESSAGE);
     
    		}
    	}
    }
    utilisateur.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    package entite;
     
    import java.sql.Connection;
    import java.sql.Date;
    import java.util.ArrayList;
     
    import controle.connection.ControleConnexion;
     
    public class Utilisateur {
     
    	// PROPRIETES
    		//Proppriétés de base de la classe
    		//================================
    	private String code_utilisateur;
    	private Groupe code_groupe;
    	private String libelle_utilisateur;
    	private Date datecreation;
     
     
    	// Propriété pour établir la connection avec la BD
    			// -----------------------------------------------
    		private static Connection laConnexion = ControleConnexion.getConnexion();	
     
    		    // propriété de type ArrayList qui contiendra les enregistrements de la BD
    		    // -----------------------------------------------------------------------
    		private final ArrayList<Utilisateur> lesEnreg = new ArrayList<Utilisateur>();
     
     
    		// Getters
    		//--------------------------
    		public String getCode_utilisateur() {
    			return code_utilisateur;
    		}
     
    		public Groupe getCode_groupe() {
    			return code_groupe;
    		}
     
    		public String getLibelle_utilisateur() {
    			return libelle_utilisateur;
    		}
     
    		public Date getDatecreation() {
    			return datecreation;
    		}
     
     
    		// Getter pour transmettre l'ArrayList  
    				// -----------------------------------
    		public ArrayList<Utilisateur> getLesEnreg() {
    			return lesEnreg;
    		}
     
    		// Setters
    		//--------------------
    		public void setCode_utilisateur(String code_utilisateur) {
    			this.code_utilisateur = code_utilisateur;
    		}
     
    		public void setCode_groupe(Groupe code_groupe) {
    			this.code_groupe = code_groupe;
    		}
     
    		public void setLibelle_utilisateur(String libelle_utilisateur) {
    			this.libelle_utilisateur = libelle_utilisateur;
    		}
     
    		public void setDatecreation(Date datecreation) {
    			this.datecreation = datecreation;
    		}
     
    		//CONSTRUCTEURS
    		//============================
    		// 1er Contructeur
    		public Utilisateur(String code_utilisateur, Groupe code_groupe,
    				String libelle_utilisateur, Date datecreation) {
    			this.code_utilisateur = code_utilisateur;
    			this.code_groupe = code_groupe;
    			this.libelle_utilisateur = libelle_utilisateur;
    			this.datecreation = datecreation;
    		}
    		// 2eme Contructeur
    		public Utilisateur (String code_utilisateur){
    			this.code_utilisateur = code_utilisateur;
    	}	
     
     
     
    }
    client.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
     
    package entite;
     
    import java.sql.Connection;
    import java.sql.Date;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
     
    import javax.swing.JOptionPane;
     
    import controle.connection.ControleConnexion;
     
    public class Client{
     
    	// PROPRIETES
    	//Proppriétés de base de la classe
    	//================================
    	private String code_client;
    	private Utilisateur code_utilisateur;
    	private String nom_client;
    	private Date datecreation;
    	private double solde;
    	private String adresse;
    	private String telephone;
    	private String email;
    	private String numero_contribuable;
    	private String prenom;
    	private String registre_commerce;
    	private String ville;
     
    	// Propriété pour établir la connection avec la BD
    		// -----------------------------------------------
    	private static Connection laConnexion = ControleConnexion.getConnexion();	
     
    	    // propriété de type ArrayList qui contiendra les enregistrements de la BD
    	    // -----------------------------------------------------------------------
    	private final ArrayList<Client> lesEnreg = new ArrayList<Client>();
     
    	// Getters
    	//--------------------------
     
    	public String getCode_client() {
    		return code_client;
    	}
     
    	public Utilisateur getCode_utilisateur() {
    		return code_utilisateur;
    	}
     
    	public String getNom_client() {
    		return nom_client;
    	}
     
    	public Date getDatecreation() {
    		return datecreation;
    	}
     
    	public double getSolde() {
    		return solde;
    	}
     
    	public String getAdresse() {
    		return adresse;
    	}
     
    	public String getTelephone() {
    		return telephone;
    	}
     
    	public String getEmail() {
    		return email;
    	}
     
    	public String getNumero_contribuable() {
    		return numero_contribuable;
    	}
     
    	public String getPrenom() {
    		return prenom;
    	}
     
    	public String getRegistre_commerce() {
    		return registre_commerce;
    	}
     
    	public String getVille() {
    		return ville;
    	}
     
    	// Getter pour transmettre l'ArrayList  
    		// -----------------------------------
    	public ArrayList<Client> getlesEnreg() {
    			return lesEnreg;
    		}
     
    	// Setters
     
    	public void setCode_client(String code_client) {
    		this.code_client = code_client;
    	}
     
    	public void setCode_utilisateur(Utilisateur code_utilisateur) {
    		this.code_utilisateur = code_utilisateur;
    	}
     
    	public void setNom_client(String nom_client) {
    		this.nom_client = nom_client;
    	}
     
    	public void setDatecreation(Date datecreation) {
    		this.datecreation = datecreation;
    	}
     
    	public void setSolde(double solde) {
    		this.solde = solde;
    	}
     
    	public void setAdresse(String adresse) {
    		this.adresse = adresse;
    	}
     
    	public void setTelephone(String telephone) {
    		this.telephone = telephone;
    	}
     
    	public void setEmail(String email) {
    		this.email = email;
    	}
     
    	public void setNumero_contribuable(String numero_contribuable) {
    		this.numero_contribuable = numero_contribuable;
    	}
     
    	public void setPrenom(String prenom) {
    		this.prenom = prenom;
    	}
     
    	public void setRegistre_commerce(String registre_commerce) {
    		this.registre_commerce = registre_commerce;
    	}
     
    	public void setVille(String ville) {
    		this.ville = ville;
    	}
     
    	// CONSTRUCTEURS
    	// -------------
    		// 1er Constructeur pour la création complète d'un client 
     
    	public Client(String code_client, Utilisateur code_utilisateur, String nom_client, Date datecreation, 
    			double solde, String adresse, String telephone, String email, String numero_contribuable,
    			String prenom, String registre_commerce, String ville) {
    		this.code_client = code_client;
    		this.code_utilisateur = code_utilisateur;
    		this.nom_client = nom_client;
    		this.datecreation = datecreation;
    		this.solde = solde;
    		this.adresse = adresse;
    		this.telephone = telephone;
    		this.email = email;
    		this.numero_contribuable = numero_contribuable;
    		this.prenom = prenom;
    		this.registre_commerce = registre_commerce;
    		this.ville = ville;
    	}
     
    	// 2eme Constructeur
    	// pour les recherches rapides basées uniquement sur le code
    	public Client(String code_client){
    		this.code_client = code_client;
    	}
     
    	// 3ème constructeur spécial utile pour les classes qui veulent juste récupérer l'ArrayList avec les enregistrements
    		// => utilisation ensuite du getter prévu à cet effet
     
    	public Client(){
    		lireRecupCRUD();
    	}
     
    	// 4eme Constructeur pour l'affichage dans la gestion des commandes
    	public Client(String nom_client, String prenom){
    	    this.nom_client = nom_client;
    	    this.prenom = prenom;
    	}
     
    	// Lecture et récupération des enregistrement de la BD
     
    	public void lireRecupCRUD(){
     
    		try{
    			Statement state = laConnexion.createStatement();
    			ResultSet rs = state.executeQuery("SELECT * FROM client ORDER BY nom_client");
    			while(rs.next()){
    				String code_client = rs.getString("code_client");
    				String code_utilisateur = rs.getString("code_utilisateur");
    				String nom_client = rs.getString("nom_client");
    				Date datecreation = rs.getDate("datecreation");
    				double solde = rs.getDouble("solde");
    				String adresse = rs.getString("adresse");
    				String telephone = rs.getString("telephone");
    				String email = rs.getString("email");
    				String numero_contribuable = rs.getString("numero_contribuable");
    				String prenom = rs.getString("prenom");
    				String registre_commerce = rs.getString("registre_commerce");
    				String ville = rs.getString("ville");
     
    				lesEnreg.add(new Client(code_client, new Utilisateur(code_utilisateur),nom_client, datecreation, solde, 
    						adresse, telephone, email, numero_contribuable, prenom, registre_commerce, ville));
    			}
     
    		}catch(SQLException e){
    			JOptionPane.showMessageDialog(null,"Problème Renconté : " + e.getMessage(),"Resultat", JOptionPane.ERROR_MESSAGE);
    		}
    	}
     
    	// Ajout d'un nouveau Client dans la bd
    	public boolean creerCRUD(String code_client, Utilisateur code_utilisateur, String nom_client, Date datecreation, 
    			double solde, String adresse, String telephone, String email, String numero_contribuable,
    			String prenom, String registre_commerce, String ville){
    		boolean bCreation = false;
    		String requete = null;
    		try{
    			requete = "INSERT INTO client(code_client, nom_client, datecreation, solde, adresse" +
    					"telephone, email, numero_contribuable, prenom, registre_commerce, ville ) VALUES ('"
    					+ code_client           +"','"
    					+ nom_client            +"','"
    					+ datecreation          +","
    					+ solde                 +"','"
    					+ adresse               +"','"
    					+ telephone             +"','"
    					+ email                 +"','"
    					+ numero_contribuable   +"','"
    					+ prenom                +"','"
    					+ registre_commerce     +"','"
    					+ ville                 +"','"
    					+ ")";
    			Statement state = laConnexion.createStatement();
    			state.executeUpdate(requete);
    			bCreation = true;
     
    		}catch(SQLException e){
    			JOptionPane.showMessageDialog(null,"Probleme rencontré :" + e.getMessage(),"Résultat",
    					JOptionPane.ERROR_MESSAGE);
     
    		}
    		return bCreation;
    	}
    }
    article.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
     
    package entite;
     
    import java.sql.Connection;
    import java.sql.Date;
    import java.util.ArrayList;
     
    import controle.connection.ControleConnexion;
     
    public class Article {
     
    	// PROPRIETES
    		//Proppriétés de base de la classe
    		//================================
    	private String code_article;
    	private Utilisateur code_utilisateur;
    	private Categorie code_categorie;
    	private String designation;
    	private Date datecreation;
    	private boolean taxable;
    	private double prix_unitaire;
     
    	// Propriété pour établir la connection avec la BD
    	// -----------------------------------------------
    	private static Connection laConnexion = ControleConnexion.getConnexion();	
    	// propriété de type ArrayList qui contiendra les enregistrements de la BD
    	// -----------------------------------------------------------------------
    	private final ArrayList<Article> lesEnreg = new ArrayList<Article>();
     
     
    	// Getters de base
    		// ---------------
    	public String getCode_article() {
    		return code_article;
    	}
    	public Utilisateur getCode_utilisateur() {
    		return code_utilisateur;
    	}
    	public Categorie getCode_categorie() {
    		return code_categorie;
    	}
    	public String getDesignation() {
    		return designation;
    	}
    	public Date getDatecreation() {
    		return datecreation;
    	}
    	public boolean isTaxable() {
    		return taxable;
    	}
    	public double getPrix_unitaire() {
    		return prix_unitaire;
    	}
     
    	// Getter pour transmettre l’ArrayList   
    	  // ----------------------------------- 
    	  public ArrayList<Article>getLesEnreg(){ 
    	    return lesEnreg; 
    	  }
     
    	// Setters 
    	  // -------  
     
    	public void setCode_article(String code_article) {
    		this.code_article = code_article;
    	}
    	public void setCode_utilisateur(Utilisateur code_utilisateur) {
    		this.code_utilisateur = code_utilisateur;
    	}
    	public void setCode_categorie(Categorie code_categorie) {
    		this.code_categorie = code_categorie;
    	}
    	public void setDesignation(String designation) {
    		this.designation = designation;
    	}
    	public void setDatecreation(Date datecreation) {
    		this.datecreation = datecreation;
    	}
    	public void setTaxable(boolean taxable) {
    		this.taxable = taxable;
    	}
    	public void setPrix_unitaire(double prix_unitaire) {
    		this.prix_unitaire = prix_unitaire;
    	}
     
    	// CONSTRUCTEURS 
    		  // -------------  
    	  // 1er Constructeur
    	public Article(String code_article, Utilisateur code_utilisateur, Categorie code_categorie, 
    			String designation, Date datecreation,boolean taxable, double prix_unitaire) {
    		super();
    		this.code_article = code_article;
    		this.code_utilisateur = code_utilisateur;
    		this.code_categorie = code_categorie;
    		this.designation = designation;
    		this.datecreation = datecreation;
    		this.taxable = taxable;
    		this.prix_unitaire = prix_unitaire;
    	} 
     
    	// 2eme Constructeur
    	public Article(){
        	lireRecupCRUD();
        }
     
    	// 3eme Constructeur
    	public Article(String code_article){
    		this.code_article = code_article;
    	}
     
    	// Lecture et récupération des enregistrements de la BD
    	public void lireRecupCRUD(){
     
    	}
    }
    facture.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    package entite;
     
    import java.sql.Connection;
    import java.sql.Date;
    import java.util.ArrayList;
     
    import controle.connection.ControleConnexion;
     
    public class Facture {
     
    	  // PROPRIETES 
    	  // Propriétés de base de classe facture
    	//===================================
     
    	private String code_facture;
    	private Utilisateur code_utilisateur;
    	private Client code_client;
    	private Agence code_agence;
    	private Date datecreation;
    	private double montant_total;
    	private String periode_facturation;
     
    	// Propriété pour établir la connection avec la BD
    	// -----------------------------------------------
    	private static Connection laConnexion = ControleConnexion.getConnexion();	
    	// propriété de type ArrayList qui contiendra les enregistrements de la BD
    	// -----------------------------------------------------------------------
    	private final ArrayList<Facture> lesEnreg = new ArrayList<Facture>();
     
     
    	// Getters de base
    			// ---------------
    	public String getCode_facture() {
    		return code_facture;
    	}
    	public Utilisateur getCode_utilisateur() {
    		return code_utilisateur;
    	}
    	public Client getCode_client() {
    		return code_client;
    	}
    	public Agence getCode_agence() {
    		return code_agence;
    	}
    	public Date getDatecreation() {
    		return datecreation;
    	}
    	public double getMontant_total() {
    		return montant_total;
    	}
    	public String getPeriode_facturation() {
    		return periode_facturation;
    	}
     
    	// Getter pour transmettre l’ArrayList   
    		  // ----------------------------------- 
    	public ArrayList<Facture> getLesEnreg() {
    		return lesEnreg;
    	}
     
    	// CONSTRUCTEURS 
    	  // -------------  
        // 1er Constructeur
    	public Facture(String code_facture, Utilisateur code_utilisateur,
    			Client code_client, Agence code_agence, Date datecreation,
    			double montant_total, String periode_facturation) {
    		super();
    		this.code_facture = code_facture;
    		this.code_utilisateur = code_utilisateur;
    		this.code_client = code_client;
    		this.code_agence = code_agence;
    		this.datecreation = datecreation;
    		this.montant_total = montant_total;
    		this.periode_facturation = periode_facturation;
    	}
     
    	// 2eme Constructeur
    	public Facture() {
    		lireRecupCRUD();
    	}
     
    	// 3eme Constructeur pour initier la recherche
    	public Facture(String code_facture){
     
    	}
     
    	// Lecture et récupération des enregistrements de la BD
        public void lireRecupCRUD(){
     
    	}
     
     
     
    }

    groupe.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    package entite;
     
    import java.sql.Connection;
    import java.sql.Date;
    import java.util.ArrayList;
     
    import controle.connection.ControleConnexion;
     
    public class Groupe {
     
    	// PROPRIETES
    			//Proppriétés de base de la classe
    			//================================
    	private String code_groupe;
    	private Utilisateur code_utilisateur;
    	private String libelle_groupe;
    	private Date datecreation;
     
    	// Propriété pour établir la connection avec la BD
    	// -----------------------------------------------
    	private static Connection laConnexion = ControleConnexion.getConnexion();	
     
    	// propriété de type ArrayList qui contiendra les enregistrements de la BD
    	// -----------------------------------------------------------------------
    	private final ArrayList<Utilisateur> lesEnreg = new ArrayList<Utilisateur>();
     
    	// Getters
    	//-------------------------- 
     
    	public String getCode_groupe() {
    		return code_groupe;
    	}
     
    	public Utilisateur getCode_utilisateur() {
    		return code_utilisateur;
    	}
     
    	public String getLibelle_groupe() {
    		return libelle_groupe;
    	}
     
    	public Date getDatecreation() {
    		return datecreation;
    	}
     
    	// Getter pour transmettre l'ArrayList  
    	// -----------------------------------
    	public ArrayList<Utilisateur> getLesEnreg() {
    		return lesEnreg;
    	}
     
    	// Setters
    	//--------------------
    	public void setCode_groupe(String code_groupe) {
    		this.code_groupe = code_groupe;
    	}
     
    	public void setCode_utilisateur(Utilisateur code_utilisateur) {
    		this.code_utilisateur = code_utilisateur;
    	}
     
    	public void setLibelle_groupe(String libelle_groupe) {
    		this.libelle_groupe = libelle_groupe;
    	}
     
    	public void setDatecreation(Date datecreation) {
    		this.datecreation = datecreation;
    	}
     
     
    	//CONSTRUCTEURS
    	//============================
    	// 1er Contructeur
    	public Groupe(String code_groupe, Utilisateur code_utilisateur,
    			String libelle_groupe, Date datecreation) {
    		super();
    		this.code_groupe = code_groupe;
    		this.code_utilisateur = code_utilisateur;
    		this.libelle_groupe = libelle_groupe;
    		this.datecreation = datecreation;
    	}
     
     
     
     
     
     
    }
    Voici ma base de données s'il te plait comment géré de tel sorte que quand il se connecte je puisse savoir quel utilisateur est connecté et lorsque qu'il effectue des traitements comme des CRUD sur les clients les articles ou les factures que je puisse avoir le tracé de ses traitements dans ma base de données.

    Voici les captures de mes fenêtres principales
    Nom : FenConnexion.PNG
Affichages : 12359
Taille : 31,1 Ko
    Nom : FenMenuPrinc.PNG
Affichages : 11882
Taille : 373,0 Ko
    Nom : FenClients.PNG
Affichages : 17076
Taille : 290,6 Ko
    Nom : FenArticles.PNG
Affichages : 14108
Taille : 264,5 Ko
    Nom : FenFactures.PNG
Affichages : 13091
Taille : 371,1 Ko

    Merci aux ames qui voudrons bien me donner un coup de main

  2. #2
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 149
    Points : 112
    Points
    112
    Par défaut
    Pourquoi tu stockes pas l'utilisateur en cours (crypté si possible) dans ta DB (ou un objet global ou un fichier) et puis tu créés une méthode qui vérifie l'utilisateur en cours en lisant dans la DB (ou...),
    tu places cette ou ces méthode(s) aux endroits appropriés de ton programme (au moment des actions ou selon une durée déterminée) et tu écris l'action dans un ou plusieurs fichier(s) textes qui constitueront tes logs... ?

  3. #3
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Citation Envoyé par leking2011 Voir le message
    Je développe une application de gestion commerciale en Java .J'aimerais y intégrer un système de gestion des utilisateurs avec groupe. En effet chaque utilisateur appartient à un groupe il y'a plusieurs groupe Administrateur, commerciaux, comptable..etc. Par conséquent chaque utilisateur connecté doit être identifié et les manipulation qu'il pourra effectuer seront stockées en quelque sorte. On pourra savoir quel utilisateur à créer tel client, quel utilisateur à réaliser tel facture ou tel état ou tel ou telle suppression c'est en gros à ça que doit me servir mon système de gestion d'utilisateur. J'aimerais vraiment avoir votre aide comment gérer ma connexion et ma classe utilisateur pour qu'elle puisse prendre en compte ce type de système de gestion des utilisateurs.
    L'ID utilisateur est une clé étrangère dans ma table client lors de l'insertion d'un nouveau client je ne sais pas comment m'y prendre. sérieusement je suis bloqué et j'arrive pas à avancé.
    Bonjour,
    Déjà il faut penser à une bonne modélisation de ton système de gestion comme un système à part entière que tu vas ensuite intégrer dans ton système global pour faire un tout. Pour ces genres de systèmes, moi je réfléchis d'abord sur l'approche que je dois emprunter. Utiliser un fichier log ou une base de données?
    Pour l'approche fichier log, il te faudra enregistrer une ligne bien structurée pour chaque opération que je jugeras pertinente dans ton application par exemple insertion d'une donnée dans la BD, suppression... Quand je dis ligne structurée, c'est pour permettre une recherche précise dans un fichier de plusieurs lignes. Et cette structure dépendra de ce que tu voudras enregistrer comme information de l'opération comme par exemple un ensemble composé de : date de l'opération, utilisateur, nom de l'opération... tous séparés par des virgules, point-virgule, tabulations...
    Et pour l'approche BD, il faudra modéliser l'architecture de celle-ci. Une archi basique serait une table "Operations" en liaison avec la table "Utilisateurs". Dans ce cas, les opérations auront d'abord un nom (suppression, modification, ajout, affichage...) qu'il te faudra gérer avec précaution lorsque l'utilisateur va déclencher un événement. Pour lister quelques autres attributs de l'entité "Operations" j'ajouterais id, date, heure, id_utilisateur. Dans ce cas, chaque fois qu'il y aura une opération jugée pertinente, c'est la table "Operations" qui sera sollicitée. Du coup, tu auras un système de gestion des traces des utilisateurs.
    Tu choisis une approche puis on continue
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Je préfère la deuxième celle ou je crée la table opération dans la bases de données. J'ai crée la table. J'ai réussit en créant une variable statique à gérer les utilisateur et les groupe j'arrive maintenant à savoir qui s'est connecté et qui à par exemple créer un client une service un produit ou ne facture. Mais pas qui as effectuer une suppression. Et maintenant j'ai un jTable qui double ligne de mes enregistrement à chaque fois que je fais un retour vers mon menu principale et que je revienne sur la page que je viens de quitter. Je vois pas ou il y'a le problème pourtant la BD ne change pas. Voici le code des classe en relation avec mon traitement
    Article.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    package entite;
     
    import java.sql.Connection;
    import java.sql.Date;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
     
    import javax.swing.JOptionPane;
     
     
     
    public class Article {
     
    	// PROPRIETES
    		//Proppriétés de base de la classe
    		//================================
    	private String code_article;
    	private String code_utilisateur;
    	private String code_categorie;
    	private String designation;
    	private java.util.Date datecreation;
    	private boolean taxable;
    	private double prix_unitaire;
    	private int quantite;
     
    	public static Utilisateur Utilisateur_connecte = new Utilisateur();
    	static Parametres param = new Parametres("root","Meuguiwarano2014");	
        static Statement state;
     
     
    	// Propriété pour établir la connection avec la BD
    	// -----------------------------------------------
    	//private static Connection laConnexion = ControleConnexion.getConnexion();	
    	// propriété de type ArrayList qui contiendra les enregistrements de la BD
    	// -----------------------------------------------------------------------
    	private final static ArrayList<Article> lesEnreg = new ArrayList<Article>();
     
     
    	// Getters de base
    		// ---------------
    	public String getCode_article() {
    		return code_article;
    	}
    	public String getCode_utilisateur() {
    		return code_utilisateur;
    	}
    	public String getCode_categorie() {
    		return code_categorie;
    	}
    	public String getDesignation() {
    		return designation;
    	}
    	public java.util.Date getDatecreation() {
    		return datecreation;
    	}
    	public boolean isTaxable() {
    		return taxable;
    	}
    	public double getPrix_unitaire() {
    		return prix_unitaire;
    	}
    	public int getQuantite() {
    		return quantite;
    	}
     
    	// Getter pour transmettre l’ArrayList   
    	  // ----------------------------------- 
    	  public ArrayList<Article>getLesEnreg(){ 
    	    return lesEnreg; 
    	  }
     
    	// Setters 
    	  // -------  
     
    	public void setCode_article(String code_article) {
    		this.code_article = code_article;
    	}
    	public void setCode_utilisateur(String code_utilisateur) {
    		this.code_utilisateur = code_utilisateur;
    	}
    	public void setCode_categorie(String code_categorie) {
    		this.code_categorie = code_categorie;
    	}
    	public void setDesignation(String designation) {
    		this.designation = designation;
    	}
    	public void setDatecreation(Date datecreation) {
    		this.datecreation = datecreation;
    	}
    	public void setTaxable(boolean taxable) {
    		this.taxable = taxable;
    	}
    	public void setPrix_unitaire(double prix_unitaire) {
    		this.prix_unitaire = prix_unitaire;
    	}
    	public void setQuantite(int quantite) {
    		this.quantite = quantite;
    	}
     
    	// CONSTRUCTEURS 
    		  // -------------  
    	  // 1er Constructeur
     
    public Article(String code_article, String code_utilisateur, String code_categorie, 
    		String designation, java.util.Date vDate,boolean taxable, double prix_unitaire, int quantite) {
    	super();
    	this.code_article = code_article;
    	this.code_utilisateur = code_utilisateur;
    	this.code_categorie = code_categorie;
    	this.designation = designation;
    	this.datecreation = vDate;
    	this.taxable = taxable;
    	this.prix_unitaire = prix_unitaire;
    	this.quantite = quantite;
    } 
     
    	// 2eme Constructeur
    	public Article(){
        	lireRecupCRUD();
        }
     
    	// 3eme Constructeur
    	public Article(String code_article){
    		this.code_article = code_article;
    	}
    	// Lecture et récupération des enregistrements de la BD
    		public void lireRecupCRUD(){
    			try{
    				param.Est_Connecte();
    				Statement state = param.conn.createStatement();
    				ResultSet rs = state.executeQuery("SELECT * FROM article");
    				while(rs.next()){
    					String code_article = rs.getString("code_article");
    					String code_utilisateur = rs.getString("code_utilisateur");
    					String code_categorie = rs.getString("code_categorie");
    					String designation = rs.getString("designation");
    					Date date_creation = rs.getDate("datecreation");
    					int quantite = rs.getInt("quantite");
    					double prix_unitaire = rs.getInt("prix_unitaire");
    					boolean taxable = rs.getBoolean("taxable");
    					lesEnreg.add(new Article(code_article,code_utilisateur,code_categorie,designation,date_creation,taxable,prix_unitaire,quantite));
    				}
    			}catch(SQLException e){
    				JOptionPane.showMessageDialog(null, 
    	    		    	"Problème rencontré : " + e.getMessage(),
    	            		"Résultat", JOptionPane.ERROR_MESSAGE);
    			}
    	  }
     
    		/*
    	     * Ajout d'un nouvel article dans la BD
    	     */
     
    		public boolean creerCRUD(String code_article, String code_utilisateur, String code_categorie, 
    				String designation, String datecreation,int taxable, double prix_unitaire, int quantite){
    			boolean bCreation = false ;
    			String requete = null;
    			try{
    				param.Est_Connecte();
    				requete = "INSERT INTO article (CODE_ARTICLE,CODE_UTILISATEUR,CODE_CATEGORIE,DESIGNATION,DATECREATION,TAXABLE,PRIX_UNITAIRE,QUANTITE) " +
    						"VALUES (?,?,?,?,NOW(),?,?,?)";
    				java.sql.PreparedStatement prepare = param.conn.prepareStatement(requete);
    				prepare.setString(1, code_article);
    				prepare.setString(2, Utilisateur.Utilisateur_connecte.getCode_utilisateur());
    				prepare.setString(3, code_categorie);
    				prepare.setString(4, designation);
    				prepare.setInt(5, taxable);
    				prepare.setDouble(6, prix_unitaire);
    				prepare.setInt(7, quantite);
    				prepare.executeUpdate();
    				 prepare.close();
    				bCreation = true;
    			}catch(SQLException e){
    				JOptionPane.showMessageDialog(null, "Ajout dans la BD non effectué : " + e.getMessage(), "Problème rencontré", JOptionPane.ERROR_MESSAGE);
     
    			}
    			return bCreation;
    		}
     
    		 /*
    	     * Modification d'un article dans la BD
    	     */
    		public boolean modifierCRUD(String code_article, String code_utilisateur, String code_categorie, 
    				String designation, Date datecreation,int taxable, double prix_unitaire, int quantite){
    			boolean bModification = true;    	
    			String requete = null; 
    			try{
    				param.Est_Connecte();
    				requete = "UPDATE article SET "
    						+ "CODE_CATEGORIE = '" + code_categorie +"',"
    						+ "	DESIGNATION = '" + designation +"',"
    						+ "	TAXABLE = '" + taxable +"',"
    						+ "	PRIX_UNITAIRE = '" + prix_unitaire +"',"
    						+ "	QUANTITE = '" + quantite +"',"
    						+ " WHERE 	CODE_ARTICLE = '" + code_article + "'"; 
    				    Statement state = param.conn.createStatement(); 
    		        	state.executeUpdate(requete); 
    		        	state.close();
    			}catch(SQLException e){
    				bModification = false;
    	            JOptionPane.showMessageDialog(null, 
    	            		"Modification dans la BD non effectuée : "
    	    		    	 + e.getMessage(),
    	                     "Problème rencontré", JOptionPane.ERROR_MESSAGE);
    			}
    			return bModification;
    		}
     
    		/*
    	     * Suppression d'un article dans la BD
    	     */
     
    		public boolean supprimerCRUD(String code_client){
    			boolean bSuppression = true;
    			String requete = null;
    			try{
    				param.Est_Connecte();	
    			requete = "DELETE FROM article WHERE code = ?";
    			java.sql.PreparedStatement prepare = param.conn.prepareStatement(requete);
    			prepare.setString(1, code_client);
    			int nbreEnregSup = prepare.executeUpdate();
    			    if(nbreEnregSup == 0){
    				    JOptionPane.showMessageDialog(null, "Aucune suppression effectuée dans la BD.", 
    						    "Problème rencontré", JOptionPane.ERROR_MESSAGE);
    			    }
    			}catch(SQLException e){
    				  bSuppression = false;
    				    JOptionPane.showMessageDialog(null, "Aucune suppression effectuée dans la BD.",
    					    "Problème rencontré", JOptionPane.ERROR_MESSAGE);
    			}
    			return bSuppression;
    		}
     
    		 /*
    	     * Recherche dans la BD
    	     */
     
    		public ArrayList<Article> chercherCRUD(String recherche){
    			String requete = "";
    			requete += "SELECT * ";
    			requete += "FROM article ";
    			requete += "WHERE code_article LIKE '%" + recherche + "%' ";
    			requete += "OR code_categorie LIKE '%" + recherche + "%' ";
    			requete += "OR designation LIKE '%" + recherche + "%' ";
    			try{
    				param.Est_Connecte();
    				Statement state = param.conn.createStatement();
    				ResultSet rs = state.executeQuery(requete);
    				while(rs.next()){
    					String code_article = rs.getString("code_article");
    					String code_utilisateur = rs.getString("code_utilisateur");
    					String code_categorie = rs.getString("code_categorie");
    					String designation = rs.getString("designation");
    					Date date_creation = rs.getDate("datecreation");
    					int quantite = rs.getInt("quantite");
    					double prix_unitaire = rs.getInt("prix_unitaire");
    					boolean taxable = rs.getBoolean("taxable");
    					lesEnreg.add(new Article(code_article,code_utilisateur,code_categorie,designation,date_creation,taxable,prix_unitaire,quantite));
    				}
     
     
    			}catch(SQLException e){
    				JOptionPane.showMessageDialog(null, "Problème rencontré : "
    				    	 + e.getMessage(),
    		                 "Résultat", JOptionPane.ERROR_MESSAGE);
    			}
    			return lesEnreg;
     
     
    		}
     
    		 /*
    	     * Recherche rapide juste sur le code
    	     */
    		public ArrayList<Article> chercherRapideCRUD_Articles(String code_article){
    			String requete = "SELECT * FROM articles WHERE code LIKE '" + code_article +"'";
    			try{
    				param.Est_Connecte();
    				Statement state = param.conn.createStatement();
    				 ResultSet rs = state.executeQuery(requete);
    				 while(rs.next()){
    					 String code_article1 = rs.getString("code_article");
    						String code_utilisateur = rs.getString("code_utilisateur");
    						String code_categorie = rs.getString("code_categorie");
    						String designation = rs.getString("designation");
    						Date date_creation = rs.getDate("datecreation");
    						int quantite = rs.getInt("quantite");
    						double prix_unitaire = rs.getInt("prix_unitaire");
    						boolean taxable = rs.getBoolean("taxable");
    						lesEnreg.add(new Article(code_article1,code_utilisateur,code_categorie,designation,date_creation,taxable,prix_unitaire,quantite));
    				 }	
    			}catch(SQLException e){
    				JOptionPane.showMessageDialog(null, "Problème rencontré : "
    				    	 + e.getMessage(),
    		                 "Résultat", JOptionPane.ERROR_MESSAGE);
    			}
    			return lesEnreg;
    		}
    		public static void main (String [] args) { 
    			   Article unArticle = new Article(); 
    			   for(int i = 0 ; i < lesEnreg.size(); i++){
    			   System.out.println("NB de clients : " + lesEnreg.get(0)); 
    			   }
    			}
     
    }
    FenArticle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
    501
    502
    503
    504
    505
    506
    507
    508
    509
    510
    511
    512
    513
    514
    515
    516
    517
    518
    519
    520
    521
    522
    523
    524
    525
    526
    527
    528
    529
    530
    531
    532
    533
    534
    535
    536
    537
    538
    539
    540
    541
    542
    543
    544
    545
    546
    547
    548
    549
    550
    551
    552
    553
    554
    555
    556
    557
    558
    559
    560
    561
    562
    563
    564
    565
    566
    567
    568
    569
    570
    571
    572
    573
    574
    575
    576
    577
    578
    579
    580
    581
    582
    583
    584
    585
    586
    587
    588
    589
    590
    591
    592
    593
    594
    595
    596
    597
    598
    599
    600
    601
    602
    603
    604
    605
    606
    607
    608
    609
    610
    611
    612
    613
    614
    615
    616
    617
    618
    619
    620
    621
    622
    623
    624
    625
    626
    627
    628
    629
    630
    631
    632
    633
    634
    635
    636
    package dialogue;
     
    import java.awt.BorderLayout;
    import java.awt.Cursor;
    import java.awt.EventQueue;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.border.LineBorder;
     
    import java.awt.Toolkit;
    import javax.swing.JLabel;
    import javax.swing.ImageIcon;
    import java.awt.Font;
    import java.awt.Color;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.text.NumberFormat;
     
    import controle.modele.ModeleArticle;
    import controle.modele.RendererDate;
    import controle.modele.RendererGras;
    import controle.utilitaires.GestionDates;
     
    import javax.swing.JTextField;
    import javax.swing.JFormattedTextField;
    import java.text.Format;
    import java.util.ArrayList;
    import java.util.Date;
     
    import javax.swing.JOptionPane;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JCheckBox;
     
    import entite.Article;
    import entite.Utilisateur;
     
    public class FenArticles extends JFrame {
     
    	private JPanel contentPane;
    	private JLabel jLab_Fond;
    	private JLabel jLab_TitreClient;
    	private JLabel jLab_SousTitre;
    	private JLabel jLab_FondModule;
    	private JLabel jLab_Code;
    	private JTextField jTxT_Code;
    	private JLabel jLab_Designation;
    	private JTextField jTxT_Designation;
    	private JLabel Categorie;
    	private JTextField jTxT_Catergorie;
    	private JLabel jLab_Quantite;
    	private JLabel jLabel_PU;
    	private JLabel jLab_Trier;
    	private JFormattedTextField jTxt_Quantité;
    	private JFormattedTextField jTxt_PU;
    	private JLabel jLab_Recherche;
    	private JScrollPane JScrollPane;
    	private JTable table;
    	private JButton btn_Ajouter;
    	private JButton btn_Effacer;
    	private JButton btn_Modifier;
    	private JButton btn_Annuler;
    	private JLabel jLab_Ajouter;
    	private JLabel jLab_Rechercher;
    	private JLabel jLab_Modifier;
    	private JLabel jLab_Supprimer;
    	private JLabel jLab_Apercu;
    	private JLabel jLab_Imprimer;
    	private JLabel jLab_Exporter;
    	private JLabel jLab_Retour;
    	private JComboBox JComboBox_Tri;
    	private JTextField rechercher;
    	private JCheckBox jCheckBox_Taxable;
    	private int num_ligne_modify = 0;
     
    	private ModeleArticle leModeleArticle = new ModeleArticle();
     
    	/**
             * Launch the application.
             */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					FenArticles frame = new FenArticles();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
     
    	 /*
         * Methode permettant de basculer les boutons lors d'un ajout ou d'une modification
         */
        private void bouton_mode_ajout_ou_edition(boolean isAjout){
    		if(isAjout){
    		    btn_Ajouter.setEnabled(true);
    		    btn_Effacer.setEnabled(true);
    		    btn_Modifier.setEnabled(false);
    		    btn_Annuler.setEnabled(false);
    		}else{
    		    btn_Ajouter.setEnabled(false);
    		    btn_Effacer.setEnabled(false);
    		    btn_Modifier.setEnabled(true);
    		    btn_Annuler.setEnabled(true);
    		}
        }    
     
    	/**
             * Create the frame.
             */
    	public FenArticles() {
    		super();
     
    		setIconImage(Toolkit.getDefaultToolkit().getImage(FenArticles.class.getResource("/images/logoEclipse.png")));
    		setResizable(false);
    		setSize(1027,582);
    		setTitle("SWECOM ARTICLES");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setLocationRelativeTo(null);
    		//setBounds(100, 100, 450, 300);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
    		contentPane.add(getJCheckBox_Taxable());
    		contentPane.add(getRechercher());
    		contentPane.add(getJComboBox_Tri());
    		contentPane.add(getJLab_Retour());
    		contentPane.add(getJLab_Exporter());
    		contentPane.add(getJLab_Imprimer());
    		contentPane.add(getJLab_Apercu());
    		contentPane.add(getJLab_Supprimer());
    		contentPane.add(getJLab_Modifier());
    		contentPane.add(getJLab_Rechercher());
    		contentPane.add(getJLab_Ajouter());
    		contentPane.add(getBtn_Annuler());
    		contentPane.add(getBtn_Modifier());
    		contentPane.add(getBtn_Effacer());
    		contentPane.add(getBtn_Ajouter());
    		contentPane.add(getJScrollPane());
    		contentPane.add(getJLab_Recherche());
    		contentPane.add(getJTxt_PU());
    		contentPane.add(getJTxt_Quantité());
    		contentPane.add(getJLab_Trier());
    		contentPane.add(getJLabel_PU());
    		contentPane.add(getJLab_Quantite());
    		contentPane.add(getJTxT_Catergorie());
    		contentPane.add(getCategorie());
    		contentPane.add(getJTxT_Designation());
    		contentPane.add(getJLab_Designation());
    		contentPane.add(getJTxT_Code());
    		contentPane.add(getJLab_Code());
    		contentPane.add(getJLab_FondModule());
    		contentPane.add(getJLab_SousTitre());
    		contentPane.add(getJLab_TitreClient());
    		contentPane.add(getJLab_Fond());
     
     
     
    		table.getColumnModel().getColumn(0).setCellRenderer(new RendererGras());
    		table.getColumnModel().getColumn(1).setCellRenderer(new RendererGras());
    		table.getColumnModel().getColumn(4).setCellRenderer(new RendererGras());
     
     
    	}
    	private JLabel getJLab_Fond() {
    		if (jLab_Fond == null) {
    			jLab_Fond = new JLabel("");
    			jLab_Fond.setIcon(new ImageIcon(FenArticles.class.getResource("/images/gestion/fondGeneral.jpg")));
    			jLab_Fond.setBounds(0, 0, 1021, 591);
    		}
    		return jLab_Fond;
    	}
    	private JLabel getJLab_TitreClient() {
    		if (jLab_TitreClient == null) {
    			jLab_TitreClient = new JLabel("Gestion des articles");
    			jLab_TitreClient.setForeground(Color.DARK_GRAY);
    			jLab_TitreClient.setFont(new Font("Segoe UI", Font.PLAIN, 24));
    			jLab_TitreClient.setIcon(new ImageIcon(FenArticles.class.getResource("/images/gestion/Database.png")));
    			jLab_TitreClient.setBounds(312, 36, 290, 64);
    		}
    		return jLab_TitreClient;
    	}
    	private JLabel getJLab_SousTitre() {
    		if (jLab_SousTitre == null) {
    			jLab_SousTitre = new JLabel("Ajout, Modification, Suppression, Consultation et Impression");
    			jLab_SousTitre.setForeground(Color.DARK_GRAY);
    			jLab_SousTitre.setFont(new Font("Segoe UI", Font.BOLD, 12));
    			jLab_SousTitre.setBounds(383, 81, 381, 14);
    		}
    		return jLab_SousTitre;
    	}
    	private JLabel getJLab_FondModule() {
    		if (jLab_FondModule == null) {
    			jLab_FondModule = 
    					new JLabel("");
    			jLab_FondModule.setIcon(new ImageIcon(FenArticles.class.getResource("/images/gestion/fondModule1.png")));
    			jLab_FondModule.setBounds(261, 114, 741, 200);
    		}
    		return jLab_FondModule;
    	}
    	private JLabel getJLab_Code() {
    		if (jLab_Code == null) {
    			jLab_Code = new JLabel("Code");
    			jLab_Code.setForeground(Color.DARK_GRAY);
    			jLab_Code.setFont(new Font("Segoe UI", Font.BOLD, 12));
    			jLab_Code.setBounds(279, 139, 54, 21);
    		}
    		return jLab_Code;
    	}
    	private JTextField getJTxT_Code() {
    		if (jTxT_Code == null) {
    			jTxT_Code = new JTextField();
    			jTxT_Code.setForeground(new Color(26, 88, 131));
    			jTxT_Code.setFont(new Font("Segoe UI", Font.PLAIN, 14));
    			jTxT_Code.setColumns(10);
    			jTxT_Code.setBackground(Color.WHITE);
    			jTxT_Code.setBounds(364, 131, 218, 29);
    		}
    		return jTxT_Code;
    	}
    	private JLabel getJLab_Designation() {
    		if (jLab_Designation == null) {
    			jLab_Designation = new JLabel("Designation");
    			jLab_Designation.setForeground(Color.DARK_GRAY);
    			jLab_Designation.setFont(new Font("Segoe UI", Font.BOLD, 12));
    			jLab_Designation.setBounds(279, 178, 74, 21);
    		}
    		return jLab_Designation;
    	}
    	private JTextField getJTxT_Designation() {
    		if (jTxT_Designation == null) {
    			jTxT_Designation = new JTextField();
    			jTxT_Designation.setForeground(new Color(26, 88, 131));
    			jTxT_Designation.setFont(new Font("Segoe UI", Font.PLAIN, 14));
    			jTxT_Designation.setColumns(10);
    			jTxT_Designation.setBackground(Color.WHITE);
    			jTxT_Designation.setBounds(364, 170, 218, 29);
    		}
    		return jTxT_Designation;
    	}
    	private JLabel getCategorie() {
    		if (Categorie == null) {
    			Categorie = new JLabel("Cat\u00E9gorie");
    			Categorie.setForeground(Color.DARK_GRAY);
    			Categorie.setFont(new Font("Segoe UI", Font.BOLD, 12));
    			Categorie.setBounds(648, 139, 74, 21);
    		}
    		return Categorie;
    	}
    	private JTextField getJTxT_Catergorie() {
    		if (jTxT_Catergorie == null) {
    			jTxT_Catergorie = new JTextField();
    			jTxT_Catergorie.setForeground(new Color(26, 88, 131));
    			jTxT_Catergorie.setFont(new Font("Segoe UI", Font.PLAIN, 14));
    			jTxT_Catergorie.setColumns(10);
    			jTxT_Catergorie.setBackground(Color.WHITE);
    			jTxT_Catergorie.setBounds(732, 134, 218, 29);
    		}
    		return jTxT_Catergorie;
    	}
    	private JLabel getJLab_Quantite() {
    		if (jLab_Quantite == null) {
    			jLab_Quantite = new JLabel("Quantit\u00E9");
    			jLab_Quantite.setForeground(Color.DARK_GRAY);
    			jLab_Quantite.setFont(new Font("Segoe UI", Font.BOLD, 12));
    			jLab_Quantite.setBounds(279, 219, 74, 21);
    		}
    		return jLab_Quantite;
    	}
    	private JLabel getJLabel_PU() {
    		if (jLabel_PU == null) {
    			jLabel_PU = new JLabel("Prix unitaire");
    			jLabel_PU.setForeground(Color.DARK_GRAY);
    			jLabel_PU.setFont(new Font("Segoe UI", Font.BOLD, 12));
    			jLabel_PU.setBounds(648, 183, 82, 21);
    		}
    		return jLabel_PU;
    	}
     
    	private JCheckBox getJCheckBox_Taxable() {
    		if (jCheckBox_Taxable == null) {
    			jCheckBox_Taxable = new JCheckBox("Taxable");
    			jCheckBox_Taxable.setFont(new Font("Segoe UI", Font.BOLD, 12));
    			jCheckBox_Taxable.setBounds(732, 220, 97, 23);
    		}
    		return jCheckBox_Taxable;
    	}
    	private JLabel getJLab_Trier() {
    		if (jLab_Trier == null) {
    			jLab_Trier = new JLabel("Trier la liste par");
    			jLab_Trier.setForeground(Color.DARK_GRAY);
    			jLab_Trier.setIcon(new ImageIcon(FenArticles.class.getResource("/images/gestion/trier.png")));
    			jLab_Trier.setFont(new Font("Segoe UI", Font.PLAIN, 12));
    			jLab_Trier.setBounds(289, 501, 139, 42);
    		}
    		return jLab_Trier;
    	}
    	private JFormattedTextField getJTxt_Quantité() {
    		if (jTxt_Quantité == null) {
    			jTxt_Quantité = new JFormattedTextField(NumberFormat.getNumberInstance());
    			jTxt_Quantité.setFont(new Font("Segoe UI", Font.PLAIN, 12));
    			jTxt_Quantité.setBounds(363, 216, 218, 29);
    			jTxt_Quantité.setForeground(new Color(26, 88, 131));
    		}
    		return jTxt_Quantité;
    	}
    	private JFormattedTextField getJTxt_PU() {
    		if (jTxt_PU == null) {
    			jTxt_PU = new JFormattedTextField((Format) null);
    			jTxt_PU.setForeground(new Color(26, 88, 131));
    			jTxt_PU.setFont(new Font("Segoe UI", Font.PLAIN, 12));
    			jTxt_PU.setBounds(732, 175, 218, 29);
    			jTxt_PU.setForeground(new Color(26, 88, 137));
    		}
    		return jTxt_PU;
    	}
    	private JLabel getJLab_Recherche() {
    		if (jLab_Recherche == null) {
    			jLab_Recherche = new JLabel("Rechercher");
    			jLab_Recherche.setIcon(new ImageIcon(FenArticles.class.getResource("/images/gestion/chercheAssiste.png")));
    			jLab_Recherche.setForeground(Color.DARK_GRAY);
    			jLab_Recherche.setFont(new Font("Segoe UI", Font.PLAIN, 12));
    			jLab_Recherche.setBounds(659, 502, 139, 42);
    		}
    		return jLab_Recherche;
    	}
    	private JScrollPane getJScrollPane() {
    		if (JScrollPane == null) {
    			JScrollPane = new JScrollPane();
    			JScrollPane.setBounds(261, 318, 741, 166);
    			JScrollPane.setViewportView(getTable());
    		}
    		return JScrollPane;
    	}
    	private JTable getTable() {
    		if (table == null) {
    			table = new JTable(leModeleArticle);
    			// bulle d'aide : utilisation de code html dans Java
    			 table.setToolTipText("<html><img src=\""+
    		    		   FenArticles.class.getResource("/images/gestion/retour.png")+
    		    		   "\" />Pour <b>modifier</b> une ligne, vous devez <b>double-cliquez</b> sur <b>celle-ci</b></html>");
    			table.addMouseListener(new java.awt.event.MouseAdapter(){
    				public void mousePressed(java.awt.event.MouseEvent e){
    					if(e.getClickCount() == 2){
    						num_ligne_modify = table.getSelectedRow(); 
    						jTxT_Code.setText(String.valueOf(table.getValueAt(num_ligne_modify, 0)));
    						jTxT_Catergorie.setText(String.valueOf(table.getValueAt(num_ligne_modify, 1)));
    						jTxT_Designation.setText(String.valueOf(table.getValueAt(num_ligne_modify, 2)));
    						jTxt_Quantité.setText(String.valueOf(table.getValueAt(num_ligne_modify, 3)));
    						jTxt_PU.setText(String.valueOf(table.getValueAt(num_ligne_modify, 4)));
     
    						bouton_mode_ajout_ou_edition(false);
    					}
    				}
    			   });
    			}
    		return table;
    	}
    	private JButton getBtn_Ajouter() {
    		if (btn_Ajouter == null) {
    			btn_Ajouter = new JButton("Ajouter");
    			btn_Ajouter.addActionListener(new ActionListener(){
    				public void actionPerformed(ActionEvent arg0){
    					String vCode = jTxT_Code.getText();
    					if(!vCode.equals("")){
    						String vCategorie = jTxT_Catergorie.getText();
    						String vDesignation = jTxT_Designation.getText();
    						int vQuantite = Integer.valueOf(jTxt_Quantité.getText());
    						double vPrix_Unitaire = Double.valueOf(jTxt_PU.getText());
    						boolean bTaxable = jCheckBox_Taxable.isSelected();
    						Date vDate = GestionDates.dateJavaEnDateSQL(new Date());
    						String strDateMySQL = GestionDates.dateEnChaineFR(vDate);
    						//Variable int à partir du booléen
    						int iTaxable;
    						if(bTaxable == true){
    							iTaxable = 1;
    						}else{
    							iTaxable = 0;
    						}
    						Article unArticle = new Article(vCode, Utilisateur.Utilisateur_connecte.getCode_utilisateur(), vCategorie, vDesignation,
    								vDate, bTaxable, vPrix_Unitaire, vQuantite);
    						boolean bCreation = false ;
    						bCreation = unArticle.creerCRUD(vCode, Utilisateur.Utilisateur_connecte.getCode_utilisateur(), vCategorie, vDesignation, strDateMySQL, iTaxable, vPrix_Unitaire, vQuantite);
    						if(bCreation){
    							leModeleArticle.creerMOD(unArticle);
    							jTxT_Code.setText("");
    							jTxT_Catergorie.setText("");
    							jTxT_Designation.setText("");
    							jTxt_PU.setText("");
    							jTxt_Quantité.setText("");
    							jCheckBox_Taxable.setSelected(false);
    							jTxT_Code.requestFocus();
    						}
    					}else{
    						JOptionPane.showMessageDialog(null, "Le code article est obligatoire", "Avertissement", JOptionPane.WARNING_MESSAGE);
    					}
    				}
    			});
    			btn_Ajouter.setFont(new Font("Segoe UI", Font.PLAIN, 12));
    			btn_Ajouter.setBounds(498, 269, 104, 38);
    		}
    		return btn_Ajouter;
    	}
    	private JButton getBtn_Effacer() {
    		if (btn_Effacer == null) {
    			btn_Effacer = new JButton("Effacer");
    			btn_Effacer.addActionListener(new ActionListener(){
    				public void actionPerformed(ActionEvent arg0){
    					jTxT_Code.setText("");
    					jTxT_Catergorie.setText("");
    					jTxT_Designation.setText("");
    					jTxt_PU.setText("");
    					jTxt_Quantité.setText("");
    					jCheckBox_Taxable.setEnabled(true);
    				}
    			});
    			btn_Effacer.setFont(new Font("Segoe UI", Font.PLAIN, 12));
    			btn_Effacer.setBounds(612, 269, 104, 38);
    		}
    		return btn_Effacer;
    	}
    	private JButton getBtn_Modifier() {
    		if (btn_Modifier == null) {
    			btn_Modifier = new JButton("Modifier");
    			btn_Modifier.addActionListener(new ActionListener(){
    				public void actionPerformed(ActionEvent arg0){
    					String vCode = jTxT_Code.getText();
    					if(!vCode.equals("")){
    						String vCategorie = jTxT_Catergorie.getText();
    						String vDesignation = jTxT_Designation.getText();
    						int vQuantite = Integer.valueOf(jTxt_Quantité.getText());
    						double vPrix_Unitaire = Double.valueOf(jTxt_PU.getText());
    						boolean bTaxable = jCheckBox_Taxable.isSelected();
    						Date vDate = GestionDates.dateJavaEnDateSQL(new Date());
    						String strDateMySQL = GestionDates.dateEnChaineFR(vDate);
    						//Variable int à partir du booléen
    						int iTaxable;
    						if(bTaxable == true){
    							iTaxable = 1;
    						}else{
    							iTaxable = 0;
    						}
    						Article unArticle = new Article(vCode, Utilisateur.Utilisateur_connecte.getCode_utilisateur(), vCategorie, vDesignation,
    								vDate, bTaxable, vPrix_Unitaire, vQuantite);
    						boolean bCreation = false ;
    						bCreation = unArticle.creerCRUD(vCode, Utilisateur.Utilisateur_connecte.getCode_utilisateur(), vCategorie, vDesignation, strDateMySQL, iTaxable, vPrix_Unitaire, vQuantite);
    						if(bCreation){
    							leModeleArticle.setValueAt(vCode, num_ligne_modify, 0);
    							leModeleArticle.setValueAt(vCategorie, num_ligne_modify, 1);
    							leModeleArticle.setValueAt(vDesignation, num_ligne_modify, 2);
    							leModeleArticle.setValueAt(vQuantite, num_ligne_modify, 3);
    							leModeleArticle.setValueAt(vPrix_Unitaire, num_ligne_modify, 4);
     
    							leModeleArticle.modifierMOD(num_ligne_modify, num_ligne_modify, unArticle);
     
    							jTxT_Code.setText("");
    							jTxT_Catergorie.setText("");
    							jTxT_Designation.setText("");
    							jTxt_PU.setText("");
    							jTxt_Quantité.setText("");
    							jCheckBox_Taxable.setSelected(true);
    							jTxT_Code.requestFocus();
     
    							bouton_mode_ajout_ou_edition(true);
    						}
    					}else{
    						JOptionPane.showMessageDialog(null, "Le code article est obligatoire", "Avertissement", JOptionPane.WARNING_MESSAGE);
    					}
    				}
    			});
    			btn_Modifier.setFont(new Font("Segoe UI", Font.PLAIN, 12));
    			btn_Modifier.setBounds(732, 269, 104, 38);
    		}
    		return btn_Modifier;
    	}
    	private JButton getBtn_Annuler() {
    		if (btn_Annuler == null) {
    			btn_Annuler = new JButton("Annuler");
    			btn_Annuler.setFont(new Font("Segoe UI", Font.PLAIN, 12));
    			btn_Annuler.setBounds(846, 269, 104, 38);
    		}
    		return btn_Annuler;
    	}
    	private JLabel getJLab_Ajouter() {
    		if (jLab_Ajouter == null) {
    			jLab_Ajouter = new JLabel("Ajouter");
    			jLab_Ajouter.setIcon(new ImageIcon(FenArticles.class.getResource("/images/gestion/ajouter.png")));
    			jLab_Ajouter.setForeground(Color.WHITE);
    			jLab_Ajouter.setFont(new Font("Segoe UI", Font.BOLD, 12));
    			jLab_Ajouter.setBounds(10, 11, 130, 48);
    		}
    		return jLab_Ajouter;
    	}
    	private JLabel getJLab_Rechercher() {
    		if (jLab_Rechercher == null) {
    			jLab_Rechercher = new JLabel("Rechercher");
    			jLab_Rechercher.setIcon(new ImageIcon(FenArticles.class.getResource("/images/gestion/chercher.png")));
    			jLab_Rechercher.setForeground(Color.WHITE);
    			jLab_Rechercher.setFont(new Font("Segoe UI", Font.BOLD, 12));
    			jLab_Rechercher.setBounds(10, 64, 159, 48);
    		}
    		return jLab_Rechercher;
    	}
    	private JLabel getJLab_Modifier() {
    		if (jLab_Modifier == null) {
    			jLab_Modifier = new JLabel("Modifier");
    			jLab_Modifier.setIcon(new ImageIcon(FenArticles.class.getResource("/images/gestion/modifier.png")));
    			jLab_Modifier.setForeground(Color.WHITE);
    			jLab_Modifier.setFont(new Font("Segoe UI", Font.BOLD, 12));
    			jLab_Modifier.setBounds(10, 123, 130, 48);
    		}
    		return jLab_Modifier;
    	}
    	private JLabel getJLab_Supprimer() {
    		if (jLab_Supprimer == null) {
    			jLab_Supprimer = new JLabel("Supprimer");
    			jLab_Supprimer.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    			jLab_Supprimer.addMouseListener(new MouseAdapter(){
    				public void mouseClicked(MouseEvent arg0){
    					 int numLigne = table.getSelectedRow();
    					 if(numLigne == -1){
    				    		JOptionPane.showMessageDialog(null, "Vous devez sélectionner une ligne pour la supprimer", "Avertissement", JOptionPane.WARNING_MESSAGE);
    				    	}else{
    				    		int choix = JOptionPane.showConfirmDialog(null, "Voulez-vous vraiment supprimer l'article sélectionné ?", "Confirmation", JOptionPane.YES_NO_OPTION);
    				    		if(choix == 0){
    				    		    String vCode = table.getValueAt(numLigne, 0).toString();			    		    
    				    		    Article unArticle = new Article(vCode);
    				    		    unArticle.supprimerCRUD(vCode);
    				    		    leModeleArticle.supprimerMOD(numLigne);
    				    		}
    				    	}
    				}
    				public void mouseEntered(MouseEvent arg0) {
    		    	    jLab_Supprimer.setIcon(new ImageIcon(FenArticles.class.getResource("/images/gestion/supprimer2.png")));
    		    	    jLab_Supprimer.setBorder(new LineBorder(Color.LIGHT_GRAY, 1, true));
    		    	}
    				public void mouseExited(MouseEvent arg0) {
    		    	    jLab_Supprimer.setIcon(new ImageIcon(FenArticles.class.getResource("/images/gestion/supprimer3.png")));
    		    	    jLab_Supprimer.setBorder(null);
    		    	}
    			});
    			jLab_Supprimer.setIcon(new ImageIcon(FenArticles.class.getResource("/images/gestion/supprimer3.png")));
    			jLab_Supprimer.setForeground(Color.WHITE);
    			jLab_Supprimer.setFont(new Font("Segoe UI", Font.BOLD, 12));
    			jLab_Supprimer.setBounds(10, 175, 149, 48);
    		}
    		return jLab_Supprimer;
    	}
    	private JLabel getJLab_Apercu() {
    		if (jLab_Apercu == null) {
    			jLab_Apercu = new JLabel(" Aper\u00E7u avant impression");
    			jLab_Apercu.setIcon(new ImageIcon(FenArticles.class.getResource("/images/gestion/apercu4.png")));
    			jLab_Apercu.setForeground(Color.WHITE);
    			jLab_Apercu.setFont(new Font("Segoe UI", Font.BOLD, 12));
    			jLab_Apercu.setBounds(10, 269, 218, 48);
    		}
    		return jLab_Apercu;
    	}
    	private JLabel getJLab_Imprimer() {
    		if (jLab_Imprimer == null) {
    			jLab_Imprimer = new JLabel("Imprimer");
    			jLab_Imprimer.setIcon(new ImageIcon(FenArticles.class.getResource("/images/gestion/imprimer4.png")));
    			jLab_Imprimer.setForeground(Color.WHITE);
    			jLab_Imprimer.setFont(new Font("Segoe UI", Font.BOLD, 12));
    			jLab_Imprimer.setBounds(10, 328, 218, 48);
    		}
    		return jLab_Imprimer;
    	}
    	private JLabel getJLab_Exporter() {
    		if (jLab_Exporter == null) {
    			jLab_Exporter = new JLabel("Exporter");
    			jLab_Exporter.setIcon(new ImageIcon(FenArticles.class.getResource("/images/gestion/export4.png")));
    			jLab_Exporter.setForeground(Color.WHITE);
    			jLab_Exporter.setFont(new Font("Segoe UI", Font.BOLD, 12));
    			jLab_Exporter.setBounds(10, 387, 218, 48);
    		}
    		return jLab_Exporter;
    	}
    	private JLabel getJLab_Retour() {
    		if (jLab_Retour == null) {
    			jLab_Retour = new JLabel("Retour au menu principal");
    			jLab_Retour.setIcon(new ImageIcon(FenArticles.class.getResource("/images/gestion/retour.png")));
    			jLab_Retour.setForeground(Color.WHITE);
    			jLab_Retour.setFont(new Font("Segoe UI", Font.BOLD, 12));
    			jLab_Retour.setBounds(10, 488, 218, 48);
    			jLab_Retour.setCursor(new Cursor(Cursor.HAND_CURSOR));
    			jLab_Retour.addMouseListener(new MouseAdapter(){
    				public void mouseClicked(MouseEvent arg0){
    					setVisible(false);
    					System.gc();
    				}
    			});
    		}
    		return jLab_Retour;
    	}
    	private JComboBox<String> getJComboBox_Tri() {
    		if (JComboBox_Tri == null) {
    			JComboBox_Tri = new JComboBox<String>();
    			JComboBox_Tri.setForeground(Color.DARK_GRAY);
    			JComboBox_Tri.setFont(new Font("Segoe UI", Font.PLAIN, 12));
    			JComboBox_Tri.setBounds(438, 513, 120, 20);
     
    			JComboBox_Tri.addItem("Code");
    			JComboBox_Tri.addItem("Catégorie");
    			JComboBox_Tri.addItem("Désignation");
    			JComboBox_Tri.addItem("Quantité");
    			JComboBox_Tri.addItem("Prix unitaire");
    		}
    		return JComboBox_Tri;
    	}
    	private JTextField getRechercher() {
    		if (rechercher == null) {
    			rechercher = new JTextField();
    			rechercher.setForeground(Color.DARK_GRAY);
    			rechercher.setForeground(new Color(26, 88, 131));
    			rechercher.setBackground(Color.WHITE);
    			rechercher.setFont(new Font("Segoe UI", Font.PLAIN, 12));
    			rechercher.setBounds(780, 514, 218, 29);
    			rechercher.setColumns(10);
    		}
    		return rechercher;
    	}
     
    }
    ModeleArticle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    package controle.modele;
     
    import java.util.ArrayList;
     
    import javax.swing.table.AbstractTableModel;
     
    import entite.Article;
     
    public class ModeleArticle extends AbstractTableModel{
    	private static final long serialVersionUID = 1L;
     
    	// Propriétés
    	Article instanceArticle = new Article();
    	private ArrayList<Article> lesDonnees = instanceArticle.getLesEnreg();
    	private final String[] lesTitres = {"Code", "Code Catégorie", "Désignation", "Quantité", "Prix unitaire"};
     
    	public int getColumnCount() {
    		return lesTitres.length;
    	}
     
    	public int getRowCount() {
    		return lesDonnees.size();
    	}
     
    	public String getColumnName(int columnIndex) {
        	return lesTitres[columnIndex];
        }
     
    	// retourne l’objet associé à une cellule de la table  
    	public Object getValueAt(int rowIndex, int columnIndex) {
    		switch(columnIndex){
    		case 0:
    		    return lesDonnees.get(rowIndex).getCode_article();
    		case 1:
    		    return lesDonnees.get(rowIndex).getCode_categorie();
    		case 2:
    		    return lesDonnees.get(rowIndex).getDesignation();
    		case 3:
    		    return lesDonnees.get(rowIndex).getQuantite();
    		case 4:
    		    return lesDonnees.get(rowIndex).getPrix_unitaire();
    		default:
    		}
    		return null;
    	}
     
    	// méthodes MOD et FireXXX  
    	public void creerMOD(Article unArticle) {
    		lesDonnees.add(unArticle);
    		fireTableRowsInserted(lesDonnees.size() -1, lesDonnees.size() -1);
        }
     
    	 public void supprimerMOD(int rowIndex) {
    			lesDonnees.remove(rowIndex);
    			fireTableRowsDeleted(rowIndex, rowIndex);
    	    }
     
    	 public void modifierMOD(int firstRow, int lastRow, Article unArticle) {
    			lesDonnees.set(firstRow, unArticle);
    			fireTableRowsUpdated(firstRow, lastRow);
    	    }
     
    	 public void lireRecupMOD(ArrayList<Article> nouvellesDonnees){
    			lesDonnees = nouvellesDonnees;
    			fireTableDataChanged();
    	    }
     
     
    }
    FenMenuPrincipale ou j'appelle la Fentre Articles

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    package dialogue;
     
    import entite.Utilisateur;
    import java.awt.Cursor;
    import java.awt.EventQueue;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import java.awt.Toolkit;
    import javax.swing.JLabel;
    import javax.swing.ImageIcon;
    import java.awt.Font;
    import javax.swing.UIManager;
     
    import com.mysql.jdbc.interceptors.SessionAssociationInterceptor;
     
    import java.awt.Color;
    import java.awt.SystemColor;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
     
    public class FenMenuPrincipal extends JFrame {
     
    	private JPanel contentPane;
    	private JLabel jLab_FondMenuPrinc;
    	private JLabel jLab_NomEse;
    	private JLabel jLab_Client;
    	private JLabel jLab_Article;
    	private JLabel jLab_TableauxBord;
    	private JLabel jLab_Logo;
    	private JLabel jLab_Parametres;
    	private JLabel jLab_Facture;
    	private JLabel jLab_Quitter;
    	public static JLabel session;
    	private JLabel jLab_Service;
     
    	/**
             * Launch the application.
             */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					FenMenuPrincipal frame = new FenMenuPrincipal();
    					frame.setVisible(true);
     
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
     
    	/**
             * Create the frame.
             */
    	public FenMenuPrincipal() {
    		setResizable(false);
    		setSize(1048,630);
    		setTitle("MENU PRINCIPAL");
    		setIconImage(Toolkit.getDefaultToolkit().getImage(FenMenuPrincipal.class.getResource("/images/connection/logoEclipse.png")));
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		//setBounds(100, 100, 711, 412);
    		setLocationRelativeTo(null);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
    		contentPane.add(getJLab_Service());
    		contentPane.add(getSession());
    		contentPane.add(getJLab_Quitter());
    		contentPane.add(getJLab_Facture());
    		contentPane.add(getJLab_Parametres());
    		contentPane.add(getJLab_Logo());
    		contentPane.add(getJLab_TableauxBord());
    		contentPane.add(getJLab_Article());
    		contentPane.add(getJLab_Client());
    		contentPane.add(getJLab_NomEse());
    		contentPane.add(getJLab_FondMenuPrinc());
    	}
     
    	private JLabel getJLab_FondMenuPrinc() {
    		if (jLab_FondMenuPrinc == null) {
    			jLab_FondMenuPrinc = new JLabel("");
    			jLab_FondMenuPrinc.setIcon(new ImageIcon(FenMenuPrincipal.class.getResource("/images/fonds/fond.jpg")));
    			jLab_FondMenuPrinc.setBounds(-73, 0, 1115, 602);
    		}
    		return jLab_FondMenuPrinc;
    	}
    	private JLabel getJLab_NomEse() {
    		if (jLab_NomEse == null) {
    			jLab_NomEse = new JLabel("SWECOM GESTION");
    			jLab_NomEse.setForeground(SystemColor.inactiveCaption);
    			jLab_NomEse.setFont(new Font("Comic Sans MS", Font.BOLD, 16));
    			jLab_NomEse.setBounds(25, 11, 236, 65);
    		}
    		return jLab_NomEse;
    	}
    	private JLabel getJLab_Client() {
    		if (jLab_Client == null) {
    			jLab_Client = new JLabel("");
    			jLab_Client.setIcon(new ImageIcon(FenMenuPrincipal.class.getResource("/images/accueil/marcheur1.png")));
    			jLab_Client.setBounds(271, 227, 205, 133);
    			// Pour avoir le pointeur de la souris sous forme de main
    			jLab_Client.setCursor(new Cursor(Cursor.HAND_CURSOR));
    			jLab_Client.addMouseListener(new MouseAdapter(){
    				// Survol de la souris
    				public void mouseEntered(MouseEvent e){
    					jLab_Client.setIcon(new ImageIcon(FenMenuPrincipal.class.getResource("/images/accueil/marcheur2.png")));
    					jLab_Client.setForeground(SystemColor.activeCaption);
    					jLab_Client.setFont(new Font("Comic Sans MS",Font.BOLD,20));
    					jLab_Client.setText("Clients");
    				}
    				// Sortie de la zone survolée
    				public void mouseExited(MouseEvent e) { 
    				    jLab_Client.setIcon(new ImageIcon (FenMenuPrincipal .class.getResource ("/images/accueil/marcheur1.png"))); 
    				    jLab_Client.setText(""); 
    			   } 
    				public void mouseClicked(MouseEvent e){
    					FenTableClients laFenetre = new FenTableClients();
    					laFenetre.setVisible(true);
    				}
     
    			});
    		}
    		return jLab_Client;
    	}
    	private JLabel getJLab_Article() {
    		if (jLab_Article == null) {
    			jLab_Article = new JLabel("");
    			jLab_Article.setIcon(new ImageIcon(FenMenuPrincipal.class.getResource("/images/accueil/iBook.png")));
    			jLab_Article.setBounds(364, 55, 215, 116);
    			jLab_Article.setCursor(new Cursor(Cursor.HAND_CURSOR));
    			jLab_Article.addMouseListener(new MouseAdapter(){
    			   //Survol de souris
    			public void mouseEntered(MouseEvent e){
    			jLab_Article.setIcon(new ImageIcon(FenMenuPrincipal.class.getResource("/images/accueil/powerBook.png")));
    			jLab_Article.setForeground(SystemColor.activeCaption);
    			jLab_Article.setFont(new Font("Comic Sans MS", Font.BOLD,20));
    			jLab_Article.setText("Articles");
    			}
    			// Sortie de la zone survolée par la souris
    			 public void mouseExited(MouseEvent e) { 
    		          jLab_Article.setIcon(new ImageIcon 
    		              (FenMenuPrincipal 
    		                  .class.getResource 
    		                    ("/images/accueil/iBook.png"))); 
    		          jLab_Article.setText(""); 
    		        } 
    			 public void mouseClicked(MouseEvent e){
    				 FenArticles laFenetre = new FenArticles();
    				 laFenetre.setVisible(true);
    			 }
     
    			});
    		}
    		return jLab_Article;
    	}
    	private JLabel getJLab_TableauxBord() {
    		if (jLab_TableauxBord == null) {
    			jLab_TableauxBord = new JLabel("");
    			jLab_TableauxBord.setIcon(new ImageIcon(FenMenuPrincipal.class.getResource("/images/accueil/camembert.png")));
    			jLab_TableauxBord.setBounds(517, 227, 228, 133);
    			jLab_TableauxBord.setCursor(new Cursor (Cursor.HAND_CURSOR));
    			jLab_TableauxBord.addMouseListener(new MouseAdapter(){
    			   public void mouseClicked(MouseEvent e){
     
    			   }
    			   public void mouseEntered(MouseEvent e){
    			   jLab_TableauxBord.setIcon(new ImageIcon (FenMenuPrincipal .class.getResource ("/images/accueil/histogramme.png"))); 
    			   jLab_TableauxBord .setForeground(SystemColor.activeCaption); 
    			   jLab_TableauxBord .setFont(new Font ("Comic Sans MS", Font.BOLD, 20)); 
    			   jLab_TableauxBord.setText("Stats");
    			   }
    			   // Sortie de la zone survolée par la souris
    			   public void mouseExited(MouseEvent e){
    			   jLab_TableauxBord.setIcon (new ImageIcon(FenMenuPrincipal.class.getResource ("/images/accueil/camembert.png"))); 
    			   jLab_TableauxBord.setText("");
    			   }
     
    			});
    		}
    		return jLab_TableauxBord;
    	}
    	private JLabel getJLab_Logo() {
    		if (jLab_Logo == null) {
    			jLab_Logo = new JLabel("");
    			jLab_Logo.setIcon(new ImageIcon(FenMenuPrincipal.class.getResource("/images/accueil/logo.png")));
    			jLab_Logo.setBounds(0, 99, 199, 85);
    		}
    		return jLab_Logo;
    	}
    	private JLabel getJLab_Parametres() {
    		if (jLab_Parametres == null) {
    			jLab_Parametres = new JLabel("");
    			jLab_Parametres.setIcon(new ImageIcon(FenMenuPrincipal.class.getResource("/images/accueil/parametre1.png")));
    			jLab_Parametres.setBounds(517, 453, 252, 138);
    			jLab_Parametres.setCursor(new Cursor(Cursor.HAND_CURSOR));
    			jLab_Parametres.addMouseListener(new MouseAdapter(){
    				public void mouseClicked(MouseEvent e){
     
    				}
    				public void mouseEntered(MouseEvent e){
    				jLab_Parametres.setIcon(new ImageIcon (FenMenuPrincipal.class.getResource ("/images/accueil/parametre2.png"))); 
    			    jLab_Parametres .setForeground(SystemColor.activeCaption); 
    			    jLab_Parametres.setFont(new Font ("Comic Sans MS", Font.BOLD, 20)); 
    			    jLab_Parametres.setText("Paramètres");   
    				}
    				public void mouseExited(MouseEvent e){
    				jLab_Parametres.setIcon(new ImageIcon(FenMenuPrincipal .class.getResource ("/images/accueil/parametre1.png"))); 
    			    jLab_Parametres.setText("");
    				}
     
    			});
    		}
    		return jLab_Parametres;
    	}
    	private JLabel getJLab_Facture() {
    		if (jLab_Facture == null) {
    			jLab_Facture = new JLabel("");
    			jLab_Facture.setIcon(new ImageIcon(FenMenuPrincipal.class.getResource("/images/accueil/classeur1.png")));
    			jLab_Facture.setBounds(817, 227, 215, 133);
    			jLab_Facture.setCursor(new Cursor(Cursor.HAND_CURSOR));
    			jLab_Facture.addMouseListener(new MouseAdapter(){
    				public void mouseClicked(MouseEvent e){
    				FenFactures laFenetre = new FenFactures();	
    				laFenetre.setVisible(true);
    				}
    				public void mouseEntered(MouseEvent e){
    				jLab_Facture.setIcon(new ImageIcon (FenMenuPrincipal.class.getResource ("/images/accueil/classeur2.png"))); 
    			    jLab_Facture .setForeground(SystemColor.activeCaption); 
    			    jLab_Facture .setFont(new Font ("Comic Sans MS", Font.BOLD, 20)); 
    			    jLab_Facture.setText("Factures");
    				}
    				public void mouseExited(MouseEvent e){
    				jLab_Facture.setIcon(new ImageIcon (FenMenuPrincipal .class.getResource ("/images/accueil/classeur1.png"))); 
    			    jLab_Facture.setText("");
    				}
    			});
    		}
    		return jLab_Facture;
    	}
    	private JLabel getJLab_Quitter() {
    		if (jLab_Quitter == null) {
    			jLab_Quitter = new JLabel("");
    			jLab_Quitter.setIcon(new ImageIcon(FenMenuPrincipal.class.getResource("/images/accueil/quitter1.png")));
    			jLab_Quitter.setBounds(25, 534, 143, 57);
    			jLab_Quitter.setCursor(new Cursor(Cursor.HAND_CURSOR));
    			jLab_Quitter.addMouseListener(new MouseAdapter(){
    			public void mouseClicked(MouseEvent e){
    				System.exit(0);
    			}
    			public void mouseEntered(MouseEvent e){
    			jLab_Quitter.setIcon(new ImageIcon (FenMenuPrincipal.class.getResource("/images/accueil/quitter2.png")));
    			jLab_Quitter.setForeground(SystemColor.activeCaption); 
    	        jLab_Quitter.setFont(new Font("Comic Sans MS", Font.BOLD, 20)); 
    	        jLab_Quitter.setText("Quitter");
    			}
    			public void mouseExited(MouseEvent e){
    			jLab_Quitter.setIcon(new ImageIcon (FenMenuPrincipal.class.getResource ("/images/accueil/quitter1.png"))); 
    		    jLab_Quitter.setText(""); 	
    			}
    			});
    		}
    		return jLab_Quitter;
    	}
    	public JLabel getSession() {
    		if (session == null) {
    			session = new JLabel("");
    			session.setForeground(Color.BLUE);
    			session.setFont(new Font("Segoe UI", Font.BOLD, 14));
    			session.setBounds(208, 11, 414, 33);
    		}
    		return session;
    	}
    	private JLabel getJLab_Service() {
    		if (jLab_Service == null) {
    			jLab_Service = new JLabel("");
    			jLab_Service.setFont(new Font("Segoe UI", Font.BOLD, 12));
    			jLab_Service.setIcon(new ImageIcon(FenMenuPrincipal.class.getResource("/images/accueil/internet.png")));
    			jLab_Service.setBounds(676, 43, 215, 128);
    			jLab_Service.setCursor(new Cursor(Cursor.HAND_CURSOR));
    			jLab_Service.addMouseListener(new MouseAdapter(){
    				public void mouseClicked(MouseEvent e){
    					FenServices laFenetre = new FenServices();
    					laFenetre.setVisible(true);
    				}
    				public void mouseEntered(MouseEvent e){
    					jLab_Service.setIcon(new ImageIcon (FenMenuPrincipal.class.getResource("/images/accueil/service.jpg")));
    					jLab_Service.setForeground(SystemColor.activeCaption); 
    			        jLab_Service.setFont(new Font("Comic Sans MS", Font.BOLD, 20)); 
    			        jLab_Service.setText("Services");
    				}
    				public void mouseExited(MouseEvent e){
    					jLab_Service.setIcon(new ImageIcon (FenMenuPrincipal.class.getResource ("/images/accueil/internet.png"))); 
    				    jLab_Service.setText("");
    				}
    			});
    		}
    		return jLab_Service;
    	}
    }
    Ma base de données à 2 enregistrement d'articles. je me connecte j'arrive au menu principal je choisis article mon jtable à 2 ligne quand je ressort par le bouton retour au menu principal et que je revienne sur la fenetre article je suis à 4 lignes ainsi de suite je ne comprends pas pourquoi mais ma base de données à toujours les 2 enregistrement.

  5. #5
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Citation Envoyé par leking2011 Voir le message
    Ma base de données à 2 enregistrement d'articles. je me connecte j'arrive au menu principal je choisis article mon jtable à 2 ligne quand je ressort par le bouton retour au menu principal et que je revienne sur la fenetre article je suis à 4 lignes ainsi de suite je ne comprends pas pourquoi mais ma base de données à toujours les 2 enregistrement.
    Tu as posé deux problèmes au même moment j'ai comme l'impression. Commençons par celui qui consiste à dupliquer les lignes de ta table (JTable). Je peux voir le code précis que tu utilises pour remplir ta table?
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Pour charger ma table j'utilise 3 classes. Une classe appelle Articles.java dans laquelle je définie la classe avec ses méthodes, une autre classe graphique FenArticles.java ensuite une autre classe modeleArticles.java qui étends l'interface AbstractTableModel.
    Le modele du tableau est créer dans la classe Modele voici son code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    package controle.modele;
     
    import java.util.ArrayList;
     
    import javax.swing.table.AbstractTableModel;
     
    import entite.Article;
     
    public class ModeleArticle extends AbstractTableModel{
    	private static final long serialVersionUID = 1L;
     
    	// Propriétés
    	Article instanceArticle = new Article();
    	private ArrayList<Article> lesDonnees = instanceArticle.getLesEnreg();
    	private final String[] lesTitres = {"Code", "Code Catégorie", "Désignation", "Quantité", "Prix unitaire"};
     
    	public int getColumnCount() {
    		return lesTitres.length;
    	}
     
    	public int getRowCount() {
    		return lesDonnees.size();
    	}
     
    	public String getColumnName(int columnIndex) {
        	return lesTitres[columnIndex];
        }
     
    	// retourne l’objet associé à une cellule de la table  
    	public Object getValueAt(int rowIndex, int columnIndex) {
    		switch(columnIndex){
    		case 0:
    		    return lesDonnees.get(rowIndex).getCode_article();
    		case 1:
    		    return lesDonnees.get(rowIndex).getCode_categorie();
    		case 2:
    		    return lesDonnees.get(rowIndex).getDesignation();
    		case 3:
    		    return lesDonnees.get(rowIndex).getQuantite();
    		case 4:
    		    return lesDonnees.get(rowIndex).getPrix_unitaire();
    		default:
    		}
    		return null;
    	}
     
    	// méthodes MOD et FireXXX  
    	public void creerMOD(Article unArticle) {
    		lesDonnees.add(unArticle);
    		fireTableRowsInserted(lesDonnees.size() -1, lesDonnees.size() -1);
        }
     
    	 public void supprimerMOD(int rowIndex) {
    			lesDonnees.remove(rowIndex);
    			fireTableRowsDeleted(rowIndex, rowIndex);
    	    }
     
    	 public void modifierMOD(int firstRow, int lastRow, Article unArticle) {
    			lesDonnees.set(firstRow, unArticle);
    			fireTableRowsUpdated(firstRow, lastRow);
    	    }
     
    	 public void lireRecupMOD(ArrayList<Article> nouvellesDonnees){
    			lesDonnees = nouvellesDonnees;
    			fireTableDataChanged();
    	    }
     
     
    }
    ensuite une instance de ce modele est passé en paramètre au tableau en question par la ligne de code suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    table = new JTable(leModeleArticle);
    Ensuite étant dans mon menu principale j'appelle la fenetre article le tableau affiche uniquement ce qui se trouve dans la bases de données comme articles
    avec cette ligne de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    	private JLabel getJLab_Article() {
    		if (jLab_Article == null) {
    			jLab_Article = new JLabel("");
    			jLab_Article.setIcon(new ImageIcon(FenMenuPrincipal.class.getResource("/images/accueil/iBook.png")));
    			jLab_Article.setBounds(364, 55, 215, 116);
    			jLab_Article.setCursor(new Cursor(Cursor.HAND_CURSOR));
    			jLab_Article.addMouseListener(new MouseAdapter(){
    			   //Survol de souris
    			public void mouseEntered(MouseEvent e){
    			jLab_Article.setIcon(new ImageIcon(FenMenuPrincipal.class.getResource("/images/accueil/powerBook.png")));
    			jLab_Article.setForeground(SystemColor.activeCaption);
    			jLab_Article.setFont(new Font("Comic Sans MS", Font.BOLD,20));
    			jLab_Article.setText("Articles");
    			}
    			// Sortie de la zone survolée par la souris
    			 public void mouseExited(MouseEvent e) { 
    		          jLab_Article.setIcon(new ImageIcon 
    		              (FenMenuPrincipal 
    		                  .class.getResource 
    		                    ("/images/accueil/iBook.png"))); 
    		          jLab_Article.setText(""); 
    		        } 
    			 public void mouseClicked(MouseEvent e){
    				 FenArticles laFenetre = new FenArticles();
    				 laFenetre.setVisible(true);
    			 }
     
    			});
    		}
    		return jLab_Article;
    	}
    Maintenant lorsque je suis sur la fenêtre des articles tout se passe bien mais lorsque je fais retour au menu principal avec un bouton qui utilise la méthode dispose et que juste après je revienne sur ma fenêtre des articles le tableau double à chaque fois les articles. Mais c'est sans incident pour la base de données.

    C'est pourquoi j'ai envoyé le code des 4 classes concernées pour que vous essayiez de voir pour me dire ou j'ai commis une érreur.
    Cordialement

  7. #7
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Bonne fête chez toi.
    Bon, lorsque tu affiches la fenêtre articles, avant de peupler la table par les données provenant de la base de données commence d'abord par supprimer toutes les lignes qui pourraient exister auparavant. Ensuite, remplis ta table comme tu le fais.
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  8. #8
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 35
    Points : 17
    Points
    17
    Par défaut JTable Java
    Bonjour Monsieur
    Je comprends pas dans quelle classe je dois faire la modification s'il vous plait j'ai besoin de détails pour corriger mon code à quels endroits précisément.

  9. #9
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    s'il vous plait quelqu'un m'aidez c urgent au cette application java en netbeans , moi j'ai fait l'interface deja sur netbeans mais le code non

    Vous etes chargés de gérer les clients d'un société. Pour cela vous disposez d'une table clients de la base de données gestion . La table clients contients cinq champs : Code client , Société , Adresse , Ville et Tél
    Questions
    >Menu fichier dispose d'une seule commande : Quiter pour quitter l'application
    >Menu déplacement dispose de quatre commandes : Premier,suibant,précédent, et dernier
    >menu edition dispose 3 commande : ajouter , supprimer et modifier
    ECRIRE LE CODE CONVENABLE POUR CHACUN DE CES MENUS(commandes)

  10. #10
    Nouveau membre du Club Avatar de Runhide
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2017
    Messages : 35
    Points : 36
    Points
    36
    Par défaut
    Visiblement tu as deux souhaits:

    1) Gèrer convenablement la connexion et déconnexion des utilisateurs.

    2) Gérer leur droits et privilèges, et faire une save de tous leurs actions.

    Pour gérer les utilisateurs de manière cadré, tu as l'API/framework JAAS d'Oracle. Classique et efficace, avec appel bdd, vérifications poussé, assez bien foutu mais il faut bien le potassé pour assimiler.

    JAAS permet (il me semble) de gérer des privilèges de groupes, ou en tout cas c'est largement implémentable.

    Sinon Apache shiiro et une version mieux conçu et plus "orienté web" que JAAS qui sent le desktop app année 2000 à plein nez.

    Pour le tracking des actions, pourquoi ne pas faire des fichiers texte de logs simplement ? Exemple sur chaque facture tu ajoute une ligne de log dans un fichier avec heure, personne etc... ce n'est qu'une fonctionnalités annexe de ton logiciel dans l'immédiat

Discussions similaires

  1. [2012] Gestion des connexions et des utilisateurs dans une application 3tiers
    Par StripMat dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 07/06/2014, 12h50
  2. XML/XSL et gestion des fichiers dans une application Web
    Par fatenatwork dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 01/02/2008, 14h09
  3. Authentification des utilisateurs dans une application web
    Par mejdac dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 22/03/2007, 14h17
  4. gestion des utilisateurs dans une solution 3-tiers
    Par nadia lydia dans le forum Oracle
    Réponses: 3
    Dernier message: 26/10/2005, 12h58
  5. Gestion des Utilisateurs depuis une application
    Par LLaurent dans le forum XMLRAD
    Réponses: 4
    Dernier message: 25/03/2003, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo