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

Interfaces Graphiques en Java Discussion :

Modifier une collection dans une autre Class (Panel)


Sujet :

Interfaces Graphiques en Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 5
    Par défaut Modifier une collection dans une autre Class (Panel)
    Bonjour à tous, je n'arrive pas à trouver la solution à mon problème, je viens donc chercher de l'aide ici.

    J'ai une collection (de type Menagerie) que je voudrais utiliser dans différentes classes (panels). Cependant, même avec des getters / setters je n'arrive pas à l'a modifier/utiliser dans mes différentes classes.

    Voilà les différentes parties du code :

    -La classe d'affichage PanelAfficher (Je voudrais l'afficher dans un 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
    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
     
     
    public class PanelAfficher extends JPanel implements ActionListener{
        private JPanel panel ;
        private JPanel panel2=new JPanel() ;
        private JPanel panel3=new JPanel() ;
        private JLabel lbl= new JLabel(" Bienvenue sur le Logiciel MyMenagerie.");
        private JLabel lbl2= new JLabel(" Choisissez ce que vous-voulez faire avec votre menagerie.");
        private JButton btnClic=new JButton("Ajouter un animal.");
        private JButton btnClic2=new JButton("Supprimer un animal.");
        private JButton btnClic3=new JButton("Voir le contenu de la ménagerie.");
        private JButton btnClic4=new JButton("Rechercher un animal.");
        private JTextField jtfNomRecherche= new JTextField(10);
        private JLabel resultatRecherche = new JLabel ();
        private JTextField jtfNomSupprimer= new JTextField(10);
        private JLabel resultatSuppression = new JLabel ();
        private JButton btnAjouter = new JButton("Ajouter");
        private JTextField jtfNomAnimal= new JTextField(10);
        private JButton btnChat=new JButton("Chat");
        private JButton btnTigre=new JButton("Tigre");
        private JButton btnPerroquet=new JButton("Perroquet");
        private JButton btnPigeon=new JButton("Pigeon");
        private JButton btnLezard=new JButton("Lézard");
        private JButton btnTortue=new JButton("Tortue");
        private String espece;
        private JLabel resultatAjout = new JLabel ();
        private JButton btnSupprimer = new JButton("Supprimer");
        JButton btnRechercher = new JButton("Rechercher");
        JPanel panelall=new JPanel();
        JPanel panelfin=new JPanel();
        String nomAnimal;
        String especeAnimal;
        String langageAnimal;
        String chaine;
        Object[][] data={{"Aucun animal","",""}};
     
     
        public PanelAfficher(){
            for(int i=0;i<FenetreFTest.getMenagerie().getListe().size();i++){
            Object[][] data = {
                      {FenetreFTest.getMenagerie().getListe().get(i).getNom(),FenetreFTest.getMenagerie().getListe().get(i).getEspece(), FenetreFTest.getMenagerie().getListe().get(i).parler()},
                    };
            }
            String  title[] = {"Nom", "Espece", "Langage"};
            JTable afficherContenu = new JTable(data,title);
     
     
            JScrollPane BarreDeroulement = new JScrollPane(afficherContenu,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
            setPreferredSize(new Dimension(450,110));
            JPanel panelAfficher=new JPanel();
            JButton btnRetour = new JButton("Retour");
            //btnRetour.addActionListener(new ActionRetour());
     
            JLabel presentation =new JLabel("Voici les animaux présent dans votre ménagerie :");
     
            panelall.setLayout(new BorderLayout());
            panelall.add(presentation, BorderLayout.NORTH);
            panelall.add(BarreDeroulement, BorderLayout.CENTER);
     
     
     
            this.revalidate();
        }
     
        @Override
        public void actionPerformed(ActionEvent arg0) {
            // TODO Auto-generated method stub
     
        }
     
        public JPanel getPanel(Menagerie laMenagerie){
            return panelall;
        }
     
     
    }
    -La classe ou j'ajoute des animaux PanelAjout qui à priori marche car j'ai bien l'affichage si l'animal est ajouté ou non :

    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
    import java.awt.Container;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JComboBox;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
     
     
     
    public class PanelAjout extends JPanel implements ActionListener{
        private JPanel panel ;
        private JPanel panel2=new JPanel() ;
        private JPanel panel3=new JPanel() ;
        private JLabel lbl= new JLabel(" Bienvenue sur le Logiciel MyMenagerie.");
        private JLabel lbl2= new JLabel(" Choisissez l'espèce et le nom de l'animal à ajouter.");
        private JButton btnClic=new JButton("Ajouter un animal.");
        private JButton btnClic2=new JButton("Supprimer un animal.");
        private JButton btnClic3=new JButton("Voir le contenu de la ménagerie.");
        private JButton btnClic4=new JButton("Rechercher un animal.");
        private Menagerie maMenagerie =  FenetreFTest.getMenagerie();
        private JTextField jtfNomRecherche= new JTextField(10);
        private JLabel resultatRecherche = new JLabel ();
        private JTextField jtfNomSupprimer= new JTextField(10);
        private JLabel resultatSuppression = new JLabel ();
        private JButton btnAjouter = new JButton("Ajouter");
        private JTextField jtfNomAnimal= new JTextField(10);
        private JButton btnChat=new JButton("Chat");
        private JButton btnTigre=new JButton("Tigre");
        private JButton btnPerroquet=new JButton("Perroquet");
        private JButton btnPigeon=new JButton("Pigeon");
        private JButton btnLezard=new JButton("Lézard");
        private JButton btnTortue=new JButton("Tortue");
         String espece;
        private JLabel resultatAjout = new JLabel ();
        private JButton btnSupprimer = new JButton("Supprimer");
        private JButton btnRechercher = new JButton("Rechercher");
        private JPanel panelall=new JPanel();
        private JComboBox listeEspece;
     
     
        public PanelAjout(){
     
     
            Object[] espece = new Object[]{"Chat", "Tigre", "Pigeon", "Perroquet", "Lézard", "Tortue"};
            listeEspece = new JComboBox(espece);
     
     
            resultatAjout.setText(" ");
            JPanel panelAjout=new JPanel();
            JButton btnRetour = new JButton("Retour");
            btnAjouter.addActionListener(new ActionAjouter());
     
            JLabel lblNom=new JLabel("Entrez le nom de l'animal : ");
     
            JPanel panelNom=new JPanel();
            panelNom.setLayout(new FlowLayout());
            panelNom.add(lblNom);
            panelNom.add(jtfNomAnimal);
            panelNom.add(btnAjouter);
     
     
            JPanel panelEspece=new JPanel();
            panelEspece.setLayout(new FlowLayout());
            panelEspece.add(listeEspece);
            panelEspece.add(jtfNomAnimal);
            panelEspece.add(btnAjouter);
     
     
     
            panelall.setLayout(new BorderLayout());
            panelall.add(lbl2, BorderLayout.NORTH);
            panelall.add(panelEspece, BorderLayout.CENTER);
            panelall.add(resultatAjout, BorderLayout.SOUTH);
            this.revalidate();
        }
     
     
     
        @Override
        public void actionPerformed(ActionEvent arg0) {
            // TODO Auto-generated method stub
     
        }
     
        public JPanel getPanel(Menagerie laMenagerie){
            maMenagerie=laMenagerie;
            return panelall;
        }
     
        public class ActionAjouter implements ActionListener{
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
     
                espece = (String) listeEspece.getSelectedItem();
     
                if(espece=="Chat"){
                    resultatAjout.removeAll();
                    resultatAjout.setText((FenetreFTest.setAjoutMenagerie(new Chat(jtfNomAnimal.getText(), espece)))); 
                }
                else{
                    if(espece=="Tigre"){
                        resultatAjout.removeAll();
                        resultatAjout.setText(FenetreFTest.getMenagerie().arriver(new Tigre(jtfNomAnimal.getText(), espece)));
                    }
                    else{
                        if(espece=="Perroquet"){
                            resultatAjout.removeAll();
                            resultatAjout.setText(FenetreFTest.getMenagerie().arriver(new Perroquet(jtfNomAnimal.getText(), espece)));
                        }
                        else{
                            if(espece=="Pigeon"){
                                resultatAjout.removeAll();
                                resultatAjout.setText(FenetreFTest.getMenagerie().arriver(new Pigeon(jtfNomAnimal.getText(), espece)));
                            }
                            else{
                                if(espece=="Lezard"){
                                    resultatAjout.removeAll();
                                    resultatAjout.setText(FenetreFTest.getMenagerie().arriver(new Lezard(jtfNomAnimal.getText(), espece)));
                                    }
                                else{
                                    if(espece=="Tortue"){
                                        resultatAjout.removeAll();
                                        resultatAjout.setText(FenetreFTest.getMenagerie().arriver(new Tortue(jtfNomAnimal.getText())));
                                    }                              
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    -Les gettters / setters (Je n'ai pas encore supprimer les méthodes inutile):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private static Menagerie maMenagerie = new Menagerie();
     
     
     
    public static String setAjoutMenagerie(Animal unAnimal){
            return maMenagerie.arriver(unAnimal);
        }
     
        public static Menagerie getMenagerie(){
            return maMenagerie;
        }
    -La classe Menagerie :

    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
    import java.util.ArrayList;
     
    public class Menagerie {
     
     
        //attribut
     
        private ArrayList<Animal> listeAnimaux;
     
        //constructeur
        public Menagerie() {
     
            this.listeAnimaux = new ArrayList<Animal>();
     
        }
     
        //methode
     
        public ArrayList<Animal> getListe(){
            return listeAnimaux;
        }
     
        public String supprimerAnimal(String unNom, String uneEspece){
            int i=0;
            String chaine=" ";
            boolean verification = false;
            while(i<this.listeAnimaux.size() && verification==false){
     
                if(unNom.equals(this.listeAnimaux.get(i).getNom()) && uneEspece.equals(this.listeAnimaux.get(i).getEspece())){
                    verification=true;
                }
                else{
                    i=i+1;
                }
            }
     
            if(verification==true){
                this.listeAnimaux.remove(i);
                chaine="L'animal a été supprimé.";
            }
            else{
                chaine="L'animal que vous voulez supprimer est introuvable.";
            }
            return chaine;
        }
     
        public String rechercheAnimal(String unNom, String uneEspece){
            int i=0;
            String chaine=" ";
            boolean verification = false;
            while(i<this.listeAnimaux.size() && verification==false){
     
                if(unNom.equals(this.listeAnimaux.get(i).getNom()) && uneEspece.equals(this.listeAnimaux.get(i).getEspece())){
                    verification=true;
                }
                else{
                    i=i+1;
                }
            }
     
            if(verification==true){
                this.listeAnimaux.remove(i);
                chaine="L'animal a été trouvé à la place"+(i+1)+".";
            }
            else{
                chaine="L'animal que vous recherchez est introuvable.";
            }
            return chaine;
        }
     
     
        public String arriver(Animal unAnimal){
            int i=0;
            String chaine ="";
            boolean verification = false;
            while(i<this.listeAnimaux.size() && verification==false){
     
                if(unAnimal.getNom().equals(this.listeAnimaux.get(i).getNom()) && unAnimal.getEspece().equals(this.listeAnimaux.get(i).getEspece())){
                    verification=true;
                }
                else{
                    i=i+1;
                }
            }
     
            if(verification==true){
                chaine="L'animal n'a pas été ajouté car il existe déjà.";
            }
            else{
                this.listeAnimaux.add(unAnimal);
                chaine="L'animal a bien été ajouté.";
            }
            return chaine;
     
        }
     
        public void partir(Animal unAnimal){
            this.listeAnimaux.remove(unAnimal);
        }
     
     
        public String presenter(){
            String chaine=" ";
            if(this.listeAnimaux.size()==0){
                chaine="La ménagerie ne possède aucun animal.";
            }
            else{
                for(int i=0;i<this.listeAnimaux.size();i++){
                    chaine+="\nJe me présente :"+this.listeAnimaux.get(i).toString()+"\n";
                    chaine+=this.listeAnimaux.get(i).parler()+"\n";
                }
            }
            return chaine;
        }
    }
    Voilà pour le gros du code, si vous voulez toutes la classe FenetreFTest, je pourrais la rajouter.

    Merci d'avance à celles et ceux qui me répondront

  2. #2
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    Bonjour,

    Un détail mais les convention d'écriture standard en java sont d'utiliser camel case pour les variables, donc pas de majuscule au début.

    sinon pour ton problème, tu peux commencer par beaucoup simplifier le code en utilisant les fonctionnalités des collections java:

    tout d'abord plutôt que d'itérer pour vérifier si un animal existe déjà avant de l'ajouter, tu peux redéfinir les méthodes hashcode et equals de la classe Animal pour trouver facilement si 2 animaux sont les mêmes.
    http://jmdoudoux.developpez.com/cour...echniques_java

    Ensuite, plutôt que d'utiliser une liste, tu peux utiliser un Set, qui ne permet pas l'ajout de doublons(en se basant justement sur hashcode et equals)
    (https://docs.oracle.com/javase/7/doc...l/HashSet.html)

    Pour plus tard également, vu que tu sembles débuter, retiens qu'il faut toujours préférer l'emploi d'un type abstrait(List) plutôt que concret(ArrayList) pour la déclaration.

Discussions similaires

  1. Modifier le style d'une page dans une frame via une autre frame
    Par Menontona dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/12/2011, 18h54
  2. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  3. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  4. modifier un élément d'une form dans une méthode d'une autre form
    Par baldebaran dans le forum Windows Forms
    Réponses: 9
    Dernier message: 14/08/2009, 13h59
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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