Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ajouter un tableau d'objet à une JList

    24 mai 2015 à 1:24:42

    Bonjour tout le monde,

    J'essaye d'ajouter une liste d'objets (guerrier, soigneur et paladin) à une JListe J1. A chaque clic sur un des boutons (Paladin, guerrier, paladin), une case du tableau est remplie de ce nouvel objet. Or on me marque NullpointerExeption. 

    En gribouillant un peu cela affichait l'adresse de la case à chaque clic et plus maintenant.

    Aidez-moi :(

    Voici mon code pour la partie fenêtre :

    import java.awt.Component;
    import java.awt.event.*;
    
    import javax.swing.*;
    import javax.swing.event.*;
    
    
    public class Fenetre2 extends JFrame implements ListSelectionListener, ActionListener
    {
    
    	private Personnage[][] tableau = new Personnage [2][5];
    	private int joueur;
    	private int adversaire;
    	private int source;
    	private int cible;
    	private String action;
    	private String DerniereAction;
    	
    	private Paladin paladin;
    	private Guerrier guerrier;
    	private Soigneur soigneur;
    	
    	private Box Fenetre;
    		private Box ListePersonnages;
    			private JList listeJ1;
    			private JList listeJ2;
    		private Box StatistiquesPersonnages;
    			private JTextArea InfosJ1;
    			private JTextArea InfosJ2;
    		private Box Boutons;
    			private JButton boutonCombat;
    			private JButton boutonSoin;
    			private JButton boutonConfirmation;
    			private JButton boutonGuerrier;
    			private JButton boutonSoigneur;
    			private JButton boutonPaladin;
    			
    		private Box SelectionEtEtatDuJeu;
    			private JTextArea TourDeJeu;
    			private JList<Personnage> listeSource;
    			private JList<String> listeCible;
    	
    	public Fenetre2() {
    		this.setTitle("Bienvenue dans le jeu de cartes de Gael et Narimane");
    	
    	this.setVisible (true);
    	this.setBounds (150, 150, 1500, 700);
    	
    	Fenetre = Box.createVerticalBox ();
    	this.getContentPane ().add (Fenetre);
    	
    	ListePersonnages = Box.createHorizontalBox ();
    	Fenetre.add (ListePersonnages);
    	
    	StatistiquesPersonnages = Box.createHorizontalBox ();
    	Fenetre.add (StatistiquesPersonnages);
    	
    	Boutons = Box.createHorizontalBox ();
    	Fenetre.add (Boutons);
    	
    	SelectionEtEtatDuJeu = Box.createHorizontalBox ();
    	Fenetre.add (SelectionEtEtatDuJeu);
    		
    		paladin = new Paladin ("Paladin");
    		guerrier = new Guerrier ("Guerrier");
    		soigneur = new Soigneur ("Soigneur");
    		
    		joueur = 0;
    		adversaire = 1;
    		DerniereAction = "";
    		/*Boutons*/		
    		/*Bouton Combat*/
    		boutonCombat = new JButton ("Combattre");
    		Boutons.add (boutonCombat);
    		boutonCombat.addActionListener (this);
    		boutonCombat.setVisible (true);
    		
    		/*Bouton Soin*/
    		boutonSoin = new JButton ("Soigner");
    		Boutons.add (boutonSoin);
    		boutonSoin.addActionListener (this);
    		boutonSoin.setVisible (true);
    		
    		/*Bouton Confirmation*/
    		boutonConfirmation = new JButton ("Confirmer");
    		Boutons.add (boutonConfirmation);
    		boutonConfirmation.addActionListener (this);
    		boutonConfirmation.setVisible (false);
    		
    		/* Bouton guerrier */
    		boutonGuerrier = new JButton("Guerrier");
    		Boutons.add(boutonGuerrier);
    		boutonGuerrier.addActionListener(this);
    		boutonGuerrier.setVisible(true);
    		
    		/* Bouton Paladin */
    		boutonPaladin = new JButton("Paladin");
    		Boutons.add(boutonPaladin);
    		boutonPaladin.addActionListener(this);
    		boutonPaladin.setVisible(true);
    		/* Bouton Soigneur */
    		
    		boutonSoigneur = new JButton("Soigneur");
    		Boutons.add(boutonSoigneur);
    		boutonSoigneur.addActionListener(this);
    		boutonSoigneur.setVisible(true);
    	}
    	
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		// TODO Auto-generated method stub
    		int s = 0;
    		int r = 0;
    		if(s<5) {
    			if (e.getSource() == boutonGuerrier) {
    				
    				tableau[r][s] = new Guerrier ("Guerrier");
    				s++;
    			}
    			
    			if(e.getSource() == boutonSoigneur) {
    				tableau[r][s] = new Soigneur ("Soigneur");
    				s++;
    			}
    			
    			if(e.getSource() == boutonPaladin) {
    				tableau[r][s] = new Paladin("Paladin");
    				s++;
    			}
    		}
    		String[] PersonnagesJ2 =
    			{
    				tableau[0][0].getNom(),
    				tableau[0][1].getNom(),
    				tableau[0][2].getNom(),
    				tableau[0][3].getNom(),
    			tableau[0][4].getNom(),
    			};
    			listeJ2 = new JList<String> (PersonnagesJ2);  
    			ListePersonnages.add (listeJ2);
    		
    	}
    
    	@Override
    	public void valueChanged(ListSelectionEvent arg0) {
    		// TODO Auto-generated method stub
    		
    	}
    }



    • Partager sur Facebook
    • Partager sur Twitter
      24 mai 2015 à 5:37:41

      En gribouillant un peu mon code je suis arrivée à la conclusion que ma variable s ne s'incrémentait pas ou bien s'incrémente de 4 tout d'un coup. 

      public void actionPerformed(ActionEvent e) {
      		// TODO Auto-generated method stub
      			int s = 0;
      			int r = 0;
      			
      			if (e.getSource() == boutonGuerrier) {
      				
      				tableau[0][s] = new Guerrier ("Guerrier");
      				s++;
      			}
      			
      			if(e.getSource() == boutonSoigneur) {
      				tableau[0][s] = new Soigneur ("Soigneur");
      				
      			}
      			
      			if(e.getSource() == boutonPaladin) {
      				tableau[0][s] = new Paladin("Paladin");
      				
      			}
      			if(s > 4)	{
      		String[] PersonnagesJ2 =
      			{
      				tableau[0][0].getNom(),
      				tableau[0][1].getNom(),
      				tableau[0][2].getNom(),
      				tableau[0][3].getNom(),
      				tableau[0][4].getNom(),
      			
      			};
      			listeJ2 = new JList<String> (PersonnagesJ2);  
      			ListePersonnages.add (listeJ2);
      			}
      			

      Je ne sais pas comment faire pour qu'à chaque fois que j'appuie sur le bouton Guerrier ça incrémente la variable s, ça remplit tout le tableau puis crée une liste à partir de ces éléments. Je sais que le s pose problème mais je ne vois pas comment faire pour que cela fonctionne.

      Merci d'avance ! :)

      Une demoiselle en détresse

      -
      Edité par Thadea 24 mai 2015 à 5:45:26

      • Partager sur Facebook
      • Partager sur Twitter
        24 mai 2015 à 10:50:38

        Bonjour,

        s est une variable locale que tu initialises à 0 à chaque clic. Donc s vaudra toujours 0.

        Deux solutions :

        • Créer un attribut nbCartes pour chaque joueur.
        • Ou encore mieux, utiliser des listes plutôt que des tableaux.
        • Partager sur Facebook
        • Partager sur Twitter
          24 mai 2015 à 12:58:28

          Bonjour,

          Je te remercie pour ta réponse ! Ça marche ! Pour la deuxième solution j'ai vu qu''on pouvait utiliser des defaultlistmodel. J'ai essayé mais cela me fonctionne pas. Tu parles-bien de ça ?

          -
          Edité par Thadea 24 mai 2015 à 13:20:28

          • Partager sur Facebook
          • Partager sur Twitter

          Ajouter un tableau d'objet à une JList

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown