Impossible d'utiliser la méthode d'ajout de mon modèle dans une autre Classe.
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:
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:
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:
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:
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