2009-03-10 19 views
0

Bir hafıza oyunu programı üzerinde çalışıyorum. Bir JPanel'de 30 tane JButton var. Kullanıcı tıkladığında ve bir eşleşme bulduğunda (aynı görüntüye sahip iki düğme), JButton'daki görüntüyü farklı bir görüntüye değiştirmek istiyorum. Ancak, program çalışırken bu gerçekleşmez.JButton görüntüsünü nasıl değiştirebilirim?

Bunu nasıl yapabilirim? Bunu yaptığını

: cardBack Zaten sahip olduğunuz bir ImageIcon olan

cards[i].setIcon(cardBack); 

.

+0

Bir simgeyi değiştirmenin doğru yolu budur. Hatanız muhtemelen kodun başka bir yerinde. – Pesto

cevap

1

JToggleButton'u kullanın. Daha spesifik olarak, setIcon ve setSelectedIcon yöntemlerini kullanın. Bu yaklaşımı kullanarak, tekerleği yeniden icat etmekten kaçınırsınız.

Örnek:

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

bu kodu kullanabilirsiniz:

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

ve proje klasörüne görüntü (image.jpg) kopya!

İlgili konular