2009-03-10 15 views
0

Je travaille sur un programme de jeu de mémoire. J'ai 30 JButtons sur un JPanel. Lorsque l'utilisateur clique et trouve une correspondance (signifiant deux boutons avec la même image), je veux changer l'image sur le JButton à une image différente. Cependant, cela ne se produit pas lorsque le programme est en cours d'exécution.Comment changer l'image d'un JButton?

Comment est-ce que je peux faire ceci?

je faisais ceci:

cards[i].setIcon(cardBack); 

où cardBack est un ImageIcon que je l'ai déjà.

+0

C'est la bonne façon de changer une icône. Votre erreur est probablement ailleurs dans le code. – Pesto

Répondre

1

Utilisez un JToggleButton. Plus spécifiquement, utilisez les méthodes setIcon et setSelectedIcon. En utilisant cette approche, vous éviterez de réinventer la roue.

Exemple:

import java.awt.FlowLayout; 
import javax.swing.JFrame; 
import javax.swing.JToggleButton; 
import javax.swing.SwingUtilities; 
import javax.swing.UIManager; 

final class JToggleButtonDemo { 
    public static final void main(final String[] args) { 
    SwingUtilities.invokeLater(new Runnable(){ 
     @Override 
     public void run() { 
      createAndShowGUI(); 
     } 
    }); 
} 
private static final void createAndShowGUI(){ 
    final JFrame frame = new JFrame(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setLayout(new FlowLayout()); // For presentation purposes only. 
    final JToggleButton button = new JToggleButton(UIManager.getIcon("OptionPane.informationIcon")); 
    button.setSelectedIcon(UIManager.getIcon("OptionPane.errorIcon")); 
    frame.add(button); 
    frame.pack(); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
} 
} 
5

vous pouvez utiliser ce code:

Icon i=new ImageIcon("image.jpg"); jButton1.setIcon(i);

et copiez votre image (image.jpg) dans votre dossier de projet!