affichage d'une liste dans une fenêtre

affichage d'une liste dans une fenêtre - Java - Programmation

Marsh Posté le 05-01-2013 à 16:05:40    

salut! je dois faire un jeux de cartes et je veux afficher deux listes dont ses composantes appartiennes à une classe (cartes) qui étend Arraylist<Personnage>. Cependant aucunes listes ne s'affichent et je ne comprends pas pourquoi :(  

Code :
  1. class Fenetre extends JFrame{
  2.    public Fenetre(Cartes cartes){
  3.       Container pan = getContentPane();
  4.       JPanel haut, bas;
  5.       final JButton combat = new JButton("Combat" );
  6.       JButton soigne = new JButton("Soigne" );
  7.       // Les listes avec leurs elements :
  8.      
  9.       final JList list1 = new JList(cartes.toArray());
  10.       final JList list2 = new JList(cartes.toArray());
  11.       final JTextArea ta1 = new JTextArea();
  12.       final JTextArea ta2 = new JTextArea();
  13.       // Les listes des personnages pouvant etre selectionnes
  14. list1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  15.       list2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  16.      
  17.       list1.addListSelectionListener(new ListSelectionListener() {
  18.        public void valueChanged(ListSelectionEvent e){
  19.         ta1.setText(((Personnage)list1.getSelectedValue()).printAll());
  20.        }
  21.       } );
  22.      
  23.       list2.addListSelectionListener(new ListSelectionListener() {
  24.          public void valueChanged(ListSelectionEvent e){
  25.           ta2.setText(((Personnage)list2.getSelectedValue()).printAll());
  26.          }
  27.         } );
  28.      
  29.      // g2.addListSelectionListener(new ListSelectionListener() {
  30.        //  public void valueChanged(ListSelectionEvent e){
  31.         //  ta1.setText(g2.printAll());  
  32.         // }  
  33.         //} );
  34.      
  35.       // Cliquer sur le bouton combat permet de declencher un combat entre les
  36.       // personnages selectionnes
  37.       // A COMPLETER Pour gerer les exceptions
  38.       combat.addActionListener(new ActionListener(){
  39.          public void actionPerformed(ActionEvent e){
  40.             Personnage p1 = (Personnage)list1.getSelectedValue();
  41.             Personnage p2 = (Personnage)list2.getSelectedValue();
  42.             //p1.combat(p2); check si p1 p2 sont des guerriers ou paladins  
  43.             ta1.setText(p1.printAll());
  44.             ta2.setText(p2.printAll());
  45.             JOptionPane.showMessageDialog(Fenetre.this,p1.getMessage(), "information", JOptionPane.INFORMATION_MESSAGE);
  46.          }
  47.       });
  48.    
  49.       // Cliquer sur le bouton soigne permet au soigneur selectionne de soigner
  50.       // un personnage selectionne
  51.       // A COMPLETER pour gerer les exceptions
  52.       soigne.addActionListener(new ActionListener(){
  53.          public void actionPerformed(ActionEvent e){
  54.             Personnage p1 = (Personnage)list1.getSelectedValue();
  55.             Personnage p2 = (Personnage)list2.getSelectedValue();
  56.             //p1.soigne(p2); il faut vérifier que p1 est un soigneur
  57.             ta1.setText(p1.printAll());
  58.             ta2.setText(p2.printAll());
  59.             JOptionPane.showMessageDialog(Fenetre.this,p1.getMessage(), "information", JOptionPane.INFORMATION_MESSAGE);
  60.          }
  61.       });
  62.       // Fermer la fenetre
  63.       addWindowListener(new WindowAdapter(){
  64.          public void windowClosing(WindowEvent e){
  65.             System.exit(0);
  66.          }
  67.       });
  68.      
  69.       // Affichage des elements graphiques
  70.       setBounds(50,50,500,200);
  71.       pan.setLayout(new GridLayout(2,1));
  72.       haut = new JPanel(new FlowLayout());
  73.       bas = new JPanel(new FlowLayout());
  74.       haut.add(list1);
  75.       haut.add(combat);
  76.       haut.add(soigne);
  77.       haut.add(list2);
  78.       bas.add(ta1);
  79.       bas.add(ta2);
  80.       pan.add(haut);
  81.       pan.add(bas);
  82.       setVisible(true);
  83.    }
  84. }
  85. // Les cartes
  86. class Cartes extends ArrayList<Personnage>{
  87.    static public Random rnd;
  88.    static Guerrier g1;
  89.    static Guerrier g2;
  90.    static Soigneur s1;
  91.    static Soigneur s2;
  92.    static Paladin p;
  93.  
  94.    public Cartes(){
  95.      g1 = new Guerrier(rnd.nextInt(20), "Escrimus" );
  96.      g2 = new Guerrier(rnd.nextInt(20), "Archeus" );
  97.      s1 = new Soigneur(rnd.nextInt(25), "Medicus" );
  98.      s2 = new Soigneur(rnd.nextInt(25), "Infirmix" );
  99.      p = new Paladin ( rnd.nextInt(25), "Paladus", rnd.nextInt(20));
  100.      }
  101. }

Reply

Marsh Posté le 05-01-2013 à 16:05:40   

Reply

Marsh Posté le 07-01-2013 à 23:03:33    

je te dis peut être une bêtise mais il faut pas faire appliquer la méthode
 
list1.setListData (cartes.toArray());
list2.setListData (cartes.toArray());
 
une fois que t'as mis tes éléments dans ton tableau, pour mettre à jour l'affichage de la liste ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed