2011-01-26 2 views
0

J'ai un problème avec mon script; Je veux repeindre une nouvelle image (un autre est affiché) lorsqu'une touche est enfoncée, mais le bouton ne fait rien ...Java repaint image

ActionListener one = new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       panel2.revalidate(); 
       panel2.repaint(); 
      } 
     }; 

     btn1.addActionListener(one); 



     JLabel test1 = new JLabel(myDeckOfCards.giveCardPlayer1().getImage()); 

     panel2.add(lab1); 
     panel2.add(test1); 
     panel2.add(pn5); 
     panel2.add(pn1); 
     panel2.add(btn1); 
+0

En fait, le ActionListener du bouton ** ** ne fait quelque chose - il redessine vos JPanel. Mais vous ne changez pas l'image affichée, donc la repeindre n'aura aucun effet. Je suis d'accord avec fd - montrez vos images dans l'icône d'un JLabel. Le JPanel peut contenir ce JLabel si vous le souhaitez. –

+0

Je ne comprends pas ce que vous suggérez. désolé pour cela – anvd

Répondre

5

intérieur actionPerformed vous devez saisir votre JLabel et appelez setIcon() sur it, passant dans la nouvelle image.

Il y a quelques façons d'obtenir le JLabel, on est de vous assurer que vous avez une variable final déclaré contenir quelque part dans la portée de votre méthode actionPerformed, et une autre est de le trouver à l'intérieur du panel2 (non recommandé).

Vous pouvez également le transmettre à votre ActionListener via un constructeur si vous déclarez une classe à part entière à cette fin.

EDIT:

final JLabel test1 = new JLabel(myDeckOfCards.giveCardPlayer1().getImage()); 

ActionListener one = new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     // Get 'anotherIcon' from somewhere, presumably from a similar 
     // place to where you retrieved the initial icon 
     test1.setIcon(anotherIcon); 
    } 
}; 

btn1.addActionListener(one); 

panel2.add(lab1); 
panel2.add(test1); 
panel2.add(pn5); 
panel2.add(pn1); 
panel2.add(btn1); 
+0

désolé, mais je ne comprends pas ce que vous avez suggéré pouvez-vous me montrer un exemple? – anvd

+0

Ajout d'un exemple –

+0

J'apprécie vraiment votre aide, merci, problème résolu – anvd