I have to write a card game. When a card is clicked a random card image is generated but because you can only click on the card once, the button is set to be disabled after clic
You simply need to set the disabled icon of the button to the same value as the icon of the button. See this example:
On the left a button where I have set both icon and disabledIcon. On the right I have only set the icon:
import java.awt.BorderLayout;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class TestDisabledButtons {
public static final String CARD_URL = "http://assets0.wordansassets.com/wvc-1345850020/wordansfiles/images/2012/8/24/156256/156256_340.jpg";
protected void createAndShowGUI() throws MalformedURLException {
JFrame frame = new JFrame("Test button");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ImageIcon imageIcon = new ImageIcon(new URL(CARD_URL));
JButton button = new JButton(imageIcon);
JButton button2 = new JButton(imageIcon);
button.setDisabledIcon(imageIcon);
button.setEnabled(false);
button2.setEnabled(false);
frame.add(button, BorderLayout.WEST);
frame.add(button2, BorderLayout.EAST);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
new TestDisabledButtons().createAndShowGUI();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}