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

Collection et Stream Java Discussion :

Méthode getter sur ArrayList


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Par défaut Méthode getter sur ArrayList
    Bonjour à tous,

    J'ai créé un tableau de x boutons qui prennent pour noms, des Strings d'un fichier .txt.
    Je souhaiterais maintenant leurs attribuer des actions. Le souci est que je ne sais pas comment faire.

    Voici le code de la classe où sont créés les boutons:
    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
     
    public class PanelPrincipale extends JPanel
    {
        private JButton[] bouton = new JButton[10];
        private JButton boutExit = new JButton("Quitter");
     
            // Une classe contenant une list de String extraites d'un fichier texte
        private NomDeBouton unNom = new NomDeBouton ();
     
        public PanelPrincipale(NomDeBouton aNom)
        {
            this.unNom = aNom;
        }
     
     
        public PanelPrincipale()
        {
            this.setLayout (new GridLayout (0,3));
     
            int x = 0;
            x = this.unNom.getListNom().size () -1;
     
            for (int i =0; i<=x; i++)
            {
                bouton[i] = new JButton(String.valueOf (this.unNom.getListNom().get (i)));
                this.add (bouton[i]);
                bouton[i].addActionListener (new GestionnaireAction ());
            }
     
            this.add (this.boutExit);
            this.boutExit.addActionListener (new GestionnaireAction ());
     
            this.setVisible (true);
        }
     
     
        public JButton [] getBouton ()
        {
            return bouton;
        }
     
        public void setBouton (JButton [] bouton)
        {
            this.bouton = bouton;
        }
     
        public JButton getBoutExit ()
        {
            return this.boutExit;
        }
    }
    voici le code du gestionnaire:
    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
     
    public class GestionnaireAction implements ActionListener
    {
        private PanelPrincipale unPanel;
     
        public GestionnaireAction ()
        {
        }
     
        public GestionnaireAction ( PanelPrincipale aPanel)
        {
            this.unPanel = aPanel;
        }
     
        public void actionPerformed (ActionEvent aAE)
        {
            if (aAE.getSource () == unPanel.getBouton ())
            {
                System.out.println ("test 1");
            }
     
            if (aAE.getSource () == unPanel.getBoutExit ())
            {
                System.exit (-1);
            }
     
        }
    }
    l'erreur que je génère lorsque je clique sur les boutons est un nullPointeur posé sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (aAE.getSource () == unPanel.getBouton ())
    Quelqu'un saurait-il m'expliquer comment faire ?

    Merci d'avance pour votre aide.

  2. #2
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    Bonjour,

    d'après ce que je crois comprendre, vous créez autant de gestionnaires d'action qu'il y a de boutons:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    bouton[i].addActionListener (new GestionnaireAction ());
    /.../
    boutExit.addActionListener (new GestionnaireAction ());
    Pourquoi ne pas créer un gestionnaire, affecté à chaque boutons:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    GestionnaireAction gestionActionBoutons = new GestionnaireAction();
    /.../
    bouton[i].addActionListener( gestionActionBoutons );
    /.../
    boutExit.addActionListener( gestionActionBoutons );
    Ensuite, mettez un point d'arrêt à l'entrée du gestionnaire d'action, et en mode débogage, vérifiez qu'à chaque appuie sur un bouton, vous passez par le gestionnaire.
    Ou ajoutez simplement pour commencer à l'entrée de gestionnaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("Evénement de Bouton");
    Ainsi vous voyez un message dans la console à chaque fois qu'un évènement est traité...

  3. #3
    Membre confirmé Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Par défaut
    Ça fait un peu de temps déjà, je n'avais pas eu le temps nécessaire pour continuer mon application.
    Je m'y suis remis, alors j'ai modifié un peu le code, j'ai maintenant un seul gestionnaire pour tous mes bouton, j'ai aussi accomplies quelques test.

    Dans mon gestionnaire je souhaite réalisé les action de boutons situé dans un Arraylist, ça ne change pas, par contre j'ai effectué un test sur le bouton quitter que je n'ai pas crée avec le ArrayList. Ce test consiste à appelé l'action du bouton d'une autre manière, et cela fonctionne sans problèmes, mais je ne sais pas trop comment l'appliquer au autres boutons.

    La méthode tel quel, lorsque je clic sur un bouton, elle m'affiche le sysout et ensuite une erreur NullPointerException.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public void actionPerformed (ActionEvent aAE)
    	{
    		System.out.println("Evénement de Bouton");
    		if (aAE.getSource () == unPanel.getBouton ())
    		{
    			System.out.println ("zobi");
    		}
     
    		if (aAE.getSource () == unPanel.getBoutExit ())
    		{
    			System.exit (-1);
    		}
    	}
    La méthode qui marche, mais que je ne sais pas appliquer aux bouton de l'ArrayList:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    String cause = aAE.getActionCommand();
            if (cause.equals("Quitter")) {
                System.exit(-1);
            }

  4. #4
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    Bonjour,

    la NullPointerException doit provenir du fait que unPanel n'est pas défini dans le gestionnaire d'évènement.
    Si vous avez besoin d'une référence à unPanel, vous devez déclarer cet élément comme membre de la classe qui englobe le gestionnaire d'évènement.

    Pour commencer, voyez du côté de ce tutoriel: http://baptiste-wicht.developpez.com...e=boutons#L5.1

    On y voit comment connaitre le bouton qui a provoqué l'entrée dans le gestionnaire d'évènements, commun à plusieurs boutons.

  5. #5
    Membre confirmé Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Par défaut
    Merci pour le lien vers le tuto, mais je ne trouve pas dedans ce qu'il me faut.
    En ce qui concerne unPanel, je l'ai défini et je l'ai valorisé avec un objet instance de la classe PanelPrincipale, je vous donne la classe du gestionnaire.
    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
     
    public class GestionnaireAction implements ActionListener
    {
    	private CheminDeBouton unChemin = new CheminDeBouton ();
    	private PanelPrincipale unPanel;
     
    	public GestionnaireAction ()
    	{
    	}
     
    	public GestionnaireAction (CheminDeBouton aChemin, PanelPrincipale aPanel)
    	{
    		this.unChemin = aChemin;
    		this.unPanel = aPanel;
    	}
     
     
    	public void actionPerformed (ActionEvent aAE)
    	{
    		System.out.println("Evénement de Bouton");
    		if (aAE.getSource () == unPanel.getBouton ())
    		{
    			System.out.println ("zobi");
    		}
     
    		if (aAE.getSource () == unPanel.getBoutExit ())
    		{
    			System.exit (-1);
    		}
    	}
     
    }

  6. #6
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    Bonjour,

    j'ai l'impression que c'est compliqué tout cela
    Je vous propose l'architecture suivante, en espérant qu'elle s'insère dans votre projet:
    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
    public class PanelPrincipale extends JPanel implements ActionListener
    {
      private JButton[] bouton;
      private JButton boutExit;
      private NomDeBouton unNom; // Une classe contenant une list de String extraites d'un fichier texte
     
      // Constructeur:
      public PanelPrincipale()
      {
        AbstractAction gestionAction;
        int x;
     
        this.setLayout (new GridLayout (0,3));
     
        gestionAction = new AbstractAction(); // Gèrera les évènement du groupe de boutons
     
        unNom = new NomDeBouton ();
        x = unNom.getListNom().size () - 1;
     
        // Création du tableau de boutons:
        for( int i = 0; i <= x; i++ )
        {
          bouton[ i ] = new JButton( String.valueOf( this.unNom.getListNom().get (i)));
          bouton[ i ].addActionListener( gestionAction ); // Un gestionnaire uniquement
          this.add( bouton[ i ]);
        }
     
        boutExit = new JButton( "Quitter" );
        boutExit.addActionListener( new actionExit()); // Affecte un gestionnaire spécial pour ce bouton
        this.add (this.boutExit);
     
        this.setVisible (true);
      }
     
    /.../
    Enfin toujours dans la classe panelPrincipal:
    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
    private class gestionAction extends AbstractAction
    {
      gestionAction()
      {
        super();
      }
     
      @Override
      public void actionPerformed( ActionEvent aE )
      {
        /.../
      }
    }
     
    /.../
     
    private class actionExit extends AbstractAction
    {
      actionExit()
      {
        super();
      }
     
      @Override
      public void actionPerformed( ActionEvent aE ) // Gestion du bouton de sortie
      {
        /.../
      }
    }
    Ce code est à tester, je ne garantis pas que ça marche vu que je débute un peu en JAVA, mais je pense que l'idée est là.

  7. #7
    Membre confirmé Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Par défaut
    ah mais ce code utilise les classes internes, et je n'aime pas trop ça. Je testerai ce code ce WE et vous communiquerais les résultats.

    En fait ce que je souhaite faire dans mon programme, c'est crée des boutons, en quantité égal au nombre de lignes d'un fichier texte, au nom égal au nom extrait d'un fichier texte. C'est boutons auront pour fonction de lancer des programmes externes, et justement les chemins de lancement des programmes externes sont aussi dans un fichier texte. Pour la quantité et les noms j'ai rélgé le problème. Mes boutons se crées en fonction de la taille du fichier et ils prennent bien pour nom, les intitulés qui sont dans le fichier texte. Mais c'est lors de l'attribution de l'action que ça plante.

    Pourquoi j'utilise les fichier texte? Parce que en fait je souhaite pourvoir rajouter des boutons au fur et a mesure du temps, sans modifier le programme, un peu à la manière d'un fichier properties. Peut-être que je me trompe de cheminement, et si d'ailleurs quelqu'un connait un meilleur moyen de faire ce que je souhaite, je suis preneur de tous conseil.

  8. #8
    Membre confirmé Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Par défaut
    J'ai donc essayé d'implémenter au mieux mais j'ai quelques soucis d'instanciation, je vous fourni la classe tel quel est aujourd'hui.
    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
     
    public class PanelPrincipale extends JPanel
    {
    	private JButton[] bouton;
    	private JButton boutExit;
    	private NomDeBouton unNom = new NomDeBouton();
     
    	public PanelPrincipale(NomDeBouton aNom){
    		this.unNom = aNom;
    	}
    	public PanelPrincipale()
    	{
    		AbstractAction gestionAction;
    		gestionAction = new GestionAction();
    		this.setLayout (new GridLayout (0,3));
     
    		int x = 0;
    		x = this.unNom.getListNom().size () -1;
     
    		for (int i =0; i<=x; i++)
    		{
    			bouton[i] = new JButton(String.valueOf (this.unNom.getListNom().get (i)));
    			bouton[i].addActionListener (gestionAction);
    			this.add (bouton[i]);
    		}
     
    		boutExit = new JButton("Quitter");
    		boutExit.addActionListener (new ActionExit());
    		this.add (this.boutExit);
     
    		this.setVisible (true);
    	}
     
    	public JButton [] getBouton ()
    	{
    		return bouton;
    	}
     
    	public void setBouton (JButton [] bouton)
    	{
    		this.bouton = bouton;
    	}
     
    	public JButton getBoutExit ()
    	{
    		return this.boutExit;
    	}
     
    	private class GestionAction extends AbstractAction{
    		public GestionAction(){
    		}
     
    		public void actionPerformed(ActionEvent aE){
    			/*System.out.println("Evénement de Bouton");
    			if (aE.getSource () == bouton[i])
    			{
    				System.out.println ("zobi");
    			}*/
    		}
    	}
     
    	private class ActionExit extends AbstractAction{
    		public ActionExit(){
    		}
     
    		public void actionPerformed(ActionEvent aE){
    			if (aE.getSource () == boutExit)
    			{
    				System.exit (-1);
    			}
    		}
    	}
    }
    Par contre je ne sais pas trop comment vous désiriez procéder avec abstractAction, pourriez-vous m'expliquer?

  9. #9
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    Bonjour,

    je ne comprends pas bien votre dernière question.

    Quel est votre problème maintenant ? Un problème à la compilation, ou pendant le débogage ?
    Avez-vous essayé le code ?

  10. #10
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    inutile d'étendre abstractAction pour ce cas, l'interface ActionListener était largement suffisante. Les Action servent à regrouper le texte, les icones, les sous titres et le code évènementiel d'un composant, afin de le réutiliser a plusieurs endroit facilement (Genre une action "Sauver" qui peux devenir aussi bien un bouton qu'une entrée de menu )

    A part ça, je ne vois pas de soucis dans le code commenté.

  11. #11
    Membre confirmé Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Par défaut
    Le problème tel qu'il est maintenant, est que le [i] n'est pas déclaré ligne 55.
    Du fait que je l'utilise dans le "for" plus haut, je ne sais pas trop comment procéder, pour récupérer la valeur de i, dans le action Event.

    A la compilation pour le moment j'ai comme erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Exception in thread "main" java.lang.NullPointerException
    	at pack.ihm.PanelPrincipale.<init>(PanelPrincipale.java:30)
    	at pack.ihm.FenetrePrincipale.<init>(FenetrePrincipale.java:10)
    	at pack.principale.Principale.main(Principale.java:10)
    Je crois que j'ai encore du me loupé dans les instanciations.

    Oui j'ai testé votre code rtg57, celui que j'ai posté est la modif que vous m'aviez donné.

  12. #12
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Vous avez plusieurs possibilités

    1) parcourir votre tableau de Button[] jusqu'à celui qui corresponde à event.getSource()
    2) instancier un listener différent pour chaque bouton, et stocker la valeur de i dans ce listener
    3) définir actionCommand sur le bouton et utiliser event.getActionCommand() pour différencier les boutons.

  13. #13
    Membre confirmé Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Par défaut
    J'ai rajouté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bouton[i].setActionCommand (this.unNom.getListNom ().get (i));
    et dans ActionPerformed
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    String cause = aE.getActionCommand ();
    for (int i =0; i<=x; i++){
    	if (cause.equals (unNom.getListNom ().get (i))){
    	        System.out.println (unNom.getListNom().get (i));
    	}
    }
    Mais j'ai toujours la même erreur qui me pointe sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    bouton[i] = new JButton(String.valueOf (this.unNom.getListNom().get (i)));
     
    Exception in thread "main" java.lang.NullPointerException
    	at pack.ihm.PanelPrincipale.<init>(PanelPrincipale.java:30)
    	at pack.ihm.FenetrePrincipale.<init>(FenetrePrincipale.java:10)
    	at pack.principale.Principale.main(Principale.java:10)
    Je suis un peu coincé la.

  14. #14
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    allez vois simplement à la lgien en question ce qui est null

  15. #15
    Membre confirmé Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Par défaut
    Visiblement ce qui est null est cette partie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bouton[i] = new JButton()
    Mais la j'avoue que je suis paumé.
    Je l'ai bien déclaré, pas instancié avant cela, j'ai mis des valeurs fictive en argument dans le JButton(), mais rien y fait c'est bien ça la cause de mon null pointeur, je cherche toujours.

    Je vous post la classe au complet:
    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
     
    public class PanelPrincipale extends JPanel
    {
    	private JButton[] bouton;
    	private JButton boutExit;
    	private NomDeBouton unNom = new NomDeBouton();
     
    	public PanelPrincipale(NomDeBouton aNom){
    		this.unNom = aNom;
    	}
     
    	private int x = this.unNom.getListNom().size () -1;
     
    	public PanelPrincipale()
    	{
    		AbstractAction gestionAction = new GestionAction();
    		this.setLayout (new GridLayout (0,3));
     
    		for (int i =0; i<=x; i++)
    		{
    			bouton[i] = new JButton(String.valueOf (this.unNom.getListNom().get (i)));
    			//bouton[i].addActionListener (gestionAction);
    			bouton[i].setActionCommand (this.unNom.getListNom ().get (i));
    			this.add (bouton[i]);
    		}
     
    		boutExit = new JButton("Quitter");
    		boutExit.addActionListener (new ActionExit());
    		this.add (this.boutExit);
     
    		this.setVisible (true);
    	}
     
    	public JButton [] getBouton ()
    	{
    		return bouton;
    	}
     
    	public void setBouton (JButton [] bouton)
    	{
    		this.bouton = bouton;
    	}
     
    	public JButton getBoutExit ()
    	{
    		return this.boutExit;
    	}
     
    	private class GestionAction extends AbstractAction{
    		public GestionAction(){
    		}
     
    		public void actionPerformed(ActionEvent aE){
    			System.out.println("Evénement de Bouton");
    			for (int i = 0;i<x;i++){
    				if (aE.getSource () == bouton[i])
    				{
    					System.out.println ("zobi");
    				}
    			}
    			String cause = aE.getActionCommand ();
    			for (int i =0; i<=x; i++){
    				if (cause.equals (unNom.getListNom ().get (i))){
    					System.out.println (unNom.getListNom().get (i));
    				}
    			}
     
    		}
    	}
     
    	private class ActionExit extends AbstractAction{
    		public ActionExit(){
    		}
     
    		public void actionPerformed(ActionEvent aE){
    			if (aE.getSource () == boutExit)
    			{
    				System.exit (-1);
    			}
    		}
    	}
    }
    Au debug, il me trouve bien le "this.unNom.getListNom().get (i)", mais à l'étape suivant il plante.

  16. #16
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Le tableau bouton n'a pas l'air d'être instancié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    bouton = new JButonn[x+1];
    		for (int i =0; i<=x; i++)
    		{
    			bouton[i] = new JButton(String.valueOf (this.unNom.getListNom().get (i)));
    			//bouton[i].addActionListener (gestionAction);
    			bouton[i].setActionCommand (this.unNom.getListNom ().get (i));
    			this.add (bouton[i]);
    		}

  17. #17
    Membre confirmé Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Par défaut
    Ben pour le null pointeur c'était bien ça, le tableau n'était pas instancié. J'avais zapé, parce que j’étais sur que la création de bouton suffisait, mais non.

    Par contre l'action des boutons me posent toujours problèmes.
    Et avec le debugger j'ai trouvé que je n'allait pas dans action Performed, donc je cherche toujours.
    Je pense que le problème vient de ma façon de gérer l'abstractAction, d’ailleurs si vous avez des tuto ou explication je suis preneur, la je suis en train de fouiller la FAQ

  18. #18
    Membre confirmé Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Par défaut
    Bon ben j'ai reformé un peu mon code et en fait le problème est que j'utilisais mal l'abstractAction, j'ai suivi un petit tuto trouvé sur ce site, je l'ai implémenté et adapté pour le tableau et nickel sa passe.

    J'ai un petit soucis maintenant avec certain programme qui ne se lance pas, lorsque je clic sur le bouton, pas d'erreur, donc je conclue que ça vient du système et pas du prog.

    Je vous file tous le code, et vous remercie de votre aides et de vos conseils.
    Ce code va être d'abord nettoyer et amélioré, et je compte l’intégrer en module dans une autre application.

    Si jamais vous avez des améliorations tenez moi au courant. Merci d'avance .

    Si vous avez des question sur l'utilisation je suis la, mais bon ca devrais pas posé de problèmes normalement.
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Méthode Bind sur quoi
    Par frouty dans le forum wxPython
    Réponses: 4
    Dernier message: 18/11/2006, 00h24
  2. tri sur arraylist
    Par david06600 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 03/10/2006, 10h24
  3. Warning avec la méthode "clone" sur un "ArrayList"
    Par Pragmateek dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 04/07/2006, 11h28
  4. Réponses: 8
    Dernier message: 19/06/2006, 15h31
  5. [Javascript][Firefox] méthode click() sur une balise A
    Par jothi35 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 17/02/2006, 14h36

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