Bonjour,

Je viens vers vous car cela fait des heures, entre cette nuit et aujourd'hui, que je me retrouve bloqué dans l'écriture de mon programme.

En effet, je dois créer une JTable afin d'y stocker des données, les créer, modifier et supprimer. Pour ce faire, j'ai suivi le le tutoriel à ce sujet mais bien que j'arrive à reproduire les exemples proposés, une fois dans mon codee je me retrouve bloqué par le fait que je cherche à appeler la méthode d'ajout ("ajoutRessource") de la classe "ModeleTableauRessources" dans la méthode "creerRessource" classe BtnActionListener sans y parvenir. J'ai fait de nombreux essais au niveau des paramètres des constructeurs en y mettant soit l'Arraylist d'origine à modifier, soit sa Classe mais rien n'y fait, il m'est impossible d'appeler la méthode "ajoutRessource" de la classe "ModeleTableauRessources".

De plus, même quand j'arrive à utiliser la méthode "ajoutRessource" à partir de sa Classe, cela ne rafraichit pas la JTable...

Avant de vous présenter mon code, je tiens tout d'abord à m'excuser du manque de lisibilité de celui-ci. Je débute en Java et un de mes défauts principaux est de ne pas assez varier les noms de variables/méthodes, etc. Je ferai mieux dans mes prochains programmes mais pour celui-ci, je doute d'avoir le temps de modifier tout ça, car je dois le rendre Mardi.
Je doute fort que mon code souffre d'autres défauts et m'en excuse au préalable...

En tous cas, merci à vous pour votre aide.

La classe "ModeleTableauRessources".
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
package presentation;
 
import java.util.ArrayList;
 
import javax.swing.table.AbstractTableModel;
 
import metier.Ressource;
import metier.Ressources;
 
public class ModeleTableauRessources extends AbstractTableModel{
 
	private Ressources ressources;
 
	private final static String[] entetes = {"Nom", "Prénom", "Spécialité", "Profile", "Projets", "Tâches"};
 
	public ModeleTableauRessources(Ressources ressources) {
 
		this.ressources = ressources;
	}
 
	public ModeleTableauRessources(Ressources ressources, Ressource ressource) {
 
		super();
 
		this.ressources = ressources;
	}
 
	@Override
	public int getRowCount() {
		return ressources.getRessources().size();
	}
 
	@Override
	public int getColumnCount() {
		return entetes.length;
	}
 
	public String getColumnName(int columnIndex) {
		return entetes[columnIndex];
	}
 
	@Override
	public Object getValueAt(int rowIndex, int columnIndex) {
		switch (columnIndex) {
		case 0:
			return ressources.getRessources().get(rowIndex).getNom();
		case 1:
			return ressources.getRessources().get(rowIndex).getPrenom();
		case 2:
			return ressources.getRessources().get(rowIndex).getSpecialite();
		case 3:
			return ressources.getRessources().get(rowIndex).getProfil();
		case 4:
			return ressources.getRessources().get(rowIndex).getNumPoste();
		case 5:
			return ressources.getRessources().get(rowIndex).getNumPortable();
		default:
			return null;
		}		
	}
 
	private void ajoutRessource(Ressource ressource)
	{
		System.out.println("add : "+ressource);
 
		ressources.getRessources().add(ressource);
 
		fireTableRowsInserted(ressources.getRessources().size()-1, ressources.getRessources().size()-1);
	}
 
	private void suppressionRessource(int rowIndex)
	{
		ressources.getRessources().remove(rowIndex);
 
		fireTableRowsDeleted(rowIndex, rowIndex);
	}
 
	public String[] getEntetes() {
		return entetes;
	}
}
La classe Ressources où se trouve l'Arraylist d'origine qui doit être modifiée par la méthode d'ajout de la classe ci-dessus.
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
package metier;
 
import java.util.ArrayList;
import java.util.Iterator;
 
import presentation.ModeleTableauRessources;
 
public class Ressources {
 
	private ArrayList<Ressource> listeRessources;
 
 
	public Ressources() {
		listeRessources = new ArrayList<Ressource>();
	}
 
	public Ressources(ArrayList<Ressource> ressources) {
		if (ressources == null) this.listeRessources 	= new ArrayList<Ressource>();
		else                 	this.listeRessources 	= ressources;
	}
 
//	public void ajoutRessource(Ressource ressource)
//	{
//		listeRessources.add(ressource);		
//	}
 
	public ArrayList<Ressource> getRessources()
	{
		return listeRessources;
	}
 
	@Override
	public String toString() {
		return "Ressources [ressources=" + listeRessources + "]";
	}
}
La classe "BtnActionListener" et sa méthode "creerRessource" (J'ai retiré le reste pour vous éviter de la lecture. J'adapterai le reste au besoin mais si vous en avez l'utilité, je vous le transmettrai)
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
package control;
 
import java.awt.Dimension;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
 
import javax.swing.ComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.RowFilter;
import javax.swing.SortingFocusTraversalPolicy;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
 
import metier.Ressources;
import metier.Ressource;
import presentation.Administration;
import presentation.CreerRessources;
import presentation.Fenetre;
import presentation.ModeleTableauRessources;
import presentation.ModifierRessources;
 
public class BtnActionListener implements ActionListener {
 
	private Fenetre fenetre;
	private CreerRessources creerRessources;
	private ModifierRessources modifierRessources;
	private Ressources ressources;
	private Ressource ressource;
	private	ModeleTableauRessources modeleTabRessources = new ModeleTableauRessources(ressources, ressource);
	private TableRowSorter<TableModel> sorter;
 
 
	public BtnActionListener(Fenetre fenetre, Ressources ressources) {
		super();
		this.fenetre = fenetre;
		this.ressources = ressources;
	}
 
	public BtnActionListener(Fenetre fenetre, Ressources ressources, TableRowSorter<TableModel> sorter) {
		super();
		this.fenetre = fenetre;
		this.ressources = ressources;
		this.sorter = sorter;
	}
 
	@Override
	public void actionPerformed(ActionEvent evenement) {
 
		if 		(fenetre instanceof Administration)			traitementAdministration(evenement);
		else if (fenetre instanceof CreerRessources)
			try {
															traitementCreerRessources(evenement);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		else if (fenetre instanceof ModifierRessources)		traitementModifierRessources(evenement);
		else System.out.println("Classe non trouvée");
 
	}
 
	public void traitementAdministration(ActionEvent evenement)
	{
		Administration administration = (Administration) fenetre;
		String critere = null;
 
		if (evenement.getSource() ==  administration.getBtnCreerRessource() || evenement.getSource() ==  administration.getMnCreerRessource())				fenetreCreerRessource();
		if (evenement.getSource() ==  administration.getBtnModifierRessource() || evenement.getSource() ==  administration.getMnModifierRessource())		fenetreModifierRessource();
		if (evenement.getSource() ==  administration.getBtnSupprimerRessource() || evenement.getSource() ==  administration.getMnSupprimerRessource())		supprimerRessource();
		if (evenement.getSource() ==  administration.getCbCritereRecherche())																				critereRecherche(administration.getModelCriteres().getSelectedCritere());
		if (evenement.getSource() ==  administration.getBtnRechercher())																					rechercherRessource(administration.getTxtChampRecherche().getText(), critere, sorter);
	}
 
	public void traitementCreerRessources(ActionEvent evenement)
	{
		this.creerRessources = (CreerRessources) fenetre;
 
		if (evenement.getSource() == creerRessources.getBtnCreer())			creerRessource();
		if (evenement.getSource() == creerRessources.getBtnAbandonner())	abandonner();
	}
 
	public void creerRessource()
	{
		String nom = null;
		String prenom = null;
		String specialite = null;
		String numPoste = null;
		String numPortable = null;
		String email = null;
		String identifiant;
		String mDP;
 
		creerRessources.getTxtMessageErreur().setText(null);
 
		Object valeurVerif = creerRessources;
 
		if ( verifSaisieTexte(creerRessources, creerRessources.getTxtNom().getText().trim())
				&&  verifSaisieTexte(creerRessources, creerRessources.getTxtPrenom().getText().trim())
				&&  verifSaisieNumTel(creerRessources, creerRessources.getTxtNumPoste().getText().trim())
				&&  verifSaisieNumTel(creerRessources, creerRessources.getTxtNumMobile().getText().trim())
				&&  verifSaiseEmail(creerRessources, creerRessources.getTxtEmail().getText().trim())
				&&  creerRessources.getTxtSpecialite().getText().trim() != null)
		{
			nom = creerRessources.getTxtNom().getText().trim();
			prenom = creerRessources.getTxtPrenom().getText().trim();
			specialite = creerRessources.getTxtSpecialite().getText().trim();
			numPoste = creerRessources.getTxtNumPoste().getText().trim();
			numPortable = creerRessources.getTxtNumMobile().getText().trim();
			email = creerRessources.getTxtEmail().getText().trim();
 
			identifiant = calculID(prenom, nom);
			mDP = calculMDP(nom);
 
			creerRessources.getTxtIdentifiant().setText(identifiant);
			creerRessources.getTxtMDP().setText(mDP);
 
			ressource = new Ressource(identifiant, mDP, nom, prenom, specialite, email, numPoste, numPortable);
			System.out.println(ressources);
 
			//TODO Créer une fenêtre de validation de la création et de confirmation de création (JOptionPane ?).
		}
	}
}
La Classe "Administration" dans laquelle je crée ma JTable.
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
package presentation;
 
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
 
import com.sun.corba.se.impl.encoding.CodeSetConversion.BTCConverter;
import com.sun.corba.se.impl.protocol.BootstrapServerRequestDispatcher;
 
import control.BtnActionListener;
import javafx.scene.control.PasswordField;
import metier.Ressource;
import metier.Ressources;
 
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
 
import java.awt.FlowLayout;
import javax.swing.BoxLayout;
import java.awt.GridLayout;
import java.awt.Font;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.awt.event.ActionEvent;
import javax.swing.border.EtchedBorder;
import java.awt.Color;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JComboBox;
 
public class Administration extends Fenetre {
 
	private JPanel contentPane;
	private JTextField txtMessageErreur;
	private JTextField txtChampRecherche;
	private JButton btnCreerRessource;
	private JButton btnModifierRessource;
	private JButton btnSupprimerRessource;
	private JButton btnRechercher;
	private JMenuItem mnCreerRessource;
	private JMenuItem mnModifierRessource;
	private JMenuItem mnSupprimerRessource;
	private JTable tableauRessources;
	private JComboBox cbCritereRecherche;
	private TableRowSorter<TableModel> sorter;
 
 
	/**
         * Create the frame.
         * @param ressources 
         * @param modeleTableauRessources 
         */
	public Administration(Ressources ressources) {
 
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
 
 
		//Création des différents panneau composant le panneau conteneur
		JPanel panneauHaut = panneauHaut();
		JPanel panneauRessources = panneauRessources(ressources);
 
		//Ajouter le tableau du haut au panneau principal
		contentPane.add(panneauHaut, BorderLayout.NORTH);
		contentPane.add(panneauRessources, BorderLayout.CENTER);
 
		//Création d'un champ pour les messages d'erreur
		txtMessageErreur = new JTextField();
		txtMessageErreur.setForeground(Color.RED);
		txtMessageErreur.setFont(new Font("Arial", Font.PLAIN, 11));
		txtMessageErreur.setEditable(false);
		txtMessageErreur.setOpaque(true);
		contentPane.add(txtMessageErreur, BorderLayout.SOUTH);
		txtMessageErreur.setColumns(30);
 
		//Création des Listeners
		BtnActionListener aal = new BtnActionListener(this, ressources, sorter);
 
		btnCreerRessource.addActionListener(aal);
		btnModifierRessource.addActionListener(aal);
		btnSupprimerRessource.addActionListener(aal);
		btnRechercher.addActionListener(aal);
		cbCritereRecherche.addActionListener(aal);
		mnCreerRessource.addActionListener(aal);
		mnModifierRessource.addActionListener(aal);
		mnSupprimerRessource.addActionListener(aal);
 
	}
 
	private JPanel panneauRessources(Ressources ressources)
	{
		//Création du panneau de Ressources qui se trouve dans le panneau du haut
		JPanel panneauRessources = new JPanel();
		panneauRessources.setLayout(new BorderLayout(0, 0));
 
		//Création des différents panneaux contenus dans le panneau Ressources
		JPanel panneauRessourcesTitrePartie = panneauRessourcesTitrePartie();
		JPanel panneauRessourcesPrincipal = panneauRessourcesPrincipal(ressources);
		JPanel panneauRessourcesBoutons = panneauRessourcesBoutons();
 
		//Ajout des différents panneaux dans le panneau Ressources
		panneauRessources.add(panneauRessourcesTitrePartie, BorderLayout.NORTH);
		panneauRessources.add(panneauRessourcesPrincipal, BorderLayout.CENTER);
		panneauRessources.add(panneauRessourcesBoutons, BorderLayout.SOUTH);
 
		return panneauRessources;	
	}
 
	private JPanel panneauRessourcesPrincipal(Ressources ressources)
	{
		//Création du panneau principal
		JPanel panneauRessourcesPrincipal = new JPanel();
		panneauRessourcesPrincipal.setLayout(new BorderLayout(0, 0));
 
		//Création des différents composants contenus le panneau principal
		JPanel panneauChampRecherche = panneauChampRecherche();
		JPanel panneauRessourcesTableau = panneauRessourcesTableau(ressources);
 
		//Ajout des différents composants
		panneauRessourcesPrincipal.add(panneauChampRecherche, BorderLayout.NORTH);
		panneauRessourcesPrincipal.add(panneauRessourcesTableau);
 
		return panneauRessourcesPrincipal;
	}
 
	private JPanel panneauRessourcesTableau(Ressources ressources)
	{
		//Créer le panneau du tableau qui se trouve dans le panneau de Ressources
		JPanel panneauRessourcesTableau = new JPanel();
		panneauRessourcesTableau.setPreferredSize(new Dimension(700, 700));
		panneauRessourcesTableau.setLayout(new BorderLayout(0, 0));
 
		//Ajout du tableau de Ressources au panneau du tableau
        tableauRessources = new JTable(new ModeleTableauRessources(ressources));
        sorter = new TableRowSorter<TableModel>(tableauRessources.getModel());
        tableauRessources.setAutoCreateRowSorter(true);
        sorter.setSortsOnUpdates(true);
 
 
		JScrollPane scrolltableauRessources = new JScrollPane(tableauRessources);
		panneauRessourcesTableau.add(scrolltableauRessources, BorderLayout.CENTER);
 
		return panneauRessourcesTableau;
	}
}
Je ne vous poste pas la Classe Ressource qui est mentionnée dans différents Constructeurs ou dans des Méthodes mais si vous en avez besoin, je vous l'enverrai.

Encore merci pour votre aide,

Cordialement,

Anubshra