How to stop a JButton going gray when disabled?

后端 未结 1 1327
梦谈多话
梦谈多话 2021-01-21 09:43

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

1条回答
  •  情歌与酒
    2021-01-21 10:02

    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:

    Example

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

    0 讨论(0)
提交回复
热议问题