如何阻止jbutton在禁用时变灰?

bvk5enib  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(354)

我得写一个纸牌游戏。单击一张卡时,会生成一个随机的卡图像,但由于您只能单击该卡一次,因此该按钮在单击后被设置为禁用。我怎样才能阻止卡片图像在单击后变灰,以便新生成的卡片图像清晰可见?

//Actions performed when an event occurs
public void actionPerformed(ActionEvent e)
{

    if (e.getSource() == card1)
    {
    randomInteger();
    card1.setIcon(cardImages[randomInt]);
    card1.setEnabled(false);

    }
    else if (e.getSource() == card2)
    {
    randomInteger();
    card2.setIcon(cardImages[randomInt]);
    card2.setEnabled(false);
    }
    else if (e.getSource() == card3)
    {
    randomInteger();
    card3.setIcon(cardImages[randomInt]);
    card3.setEnabled(false);
    }
    else if (e.getSource() == card4)
    {
    randomInteger();
    card4.setIcon(cardImages[randomInt]);
    card4.setEnabled(false);
    }
    else
    {
    randomInteger();
    card5.setIcon(cardImages[randomInt]);
    card5.setEnabled(false);
    }

}

}
iezvtpos

iezvtpos1#

只需将按钮的禁用图标设置为与按钮图标相同的值。请参见此示例:
在左边的一个按钮,我已经设置了图标和禁用图标。在右边,我只设置了图标:

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();
                }
            }
        });
    }

}

相关问题