单击按钮可更改图片

rdm*_*zcn 1 java swing button

我喜欢做一个像宝石迷阵或糖果粉碎的游戏.我创建了64个按钮单元8x8.我想更改点击按钮的图像.但我不能.如果你能提供帮助,我会很高兴的.或者我怎么办?

编辑:我很抱歉.我无法清楚地解释我的问题.我的问题,我想改变点击两个按钮的图片.例如,我点击了按钮[5],然后点击了按钮[11].然后按钮[5]的图标应为按钮[11]图标,[11]的图标应为按钮[5]图标.

public class butondeneme extends JFrame{

private JPanel grid;
private JFrame jr;

public butondeneme(){
    jr=new JFrame();
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 640, 640);
    grid=new JPanel();
    grid.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    grid.setLayout(new GridLayout(8,8,5,5));

    JButton[] buttons = new JButton[64];


 //Creating random image for buttons

        for (int i = 0; i<buttons.length; i++) {

                Random r = new Random();
                int a = r.nextInt(9)+1;
                switch(a){
                case 1 : buttons[i]=new JButton(new ImageIcon("img//Cakal.png"));
                        break;
                case 2 : buttons[i]=new JButton(new ImageIcon("img//BugsBunny.png"));
                        break;
                case 3 : buttons[i]=new JButton(new ImageIcon("img//Pig.png"));
                        break;
                case 4 : buttons[i]=new JButton(new ImageIcon("img//Taz.png"));
                        break;
                case 5 : buttons[i]=new JButton(new ImageIcon("img//Sam.png"));
                        break;
                case 6 : buttons[i]=new JButton(new ImageIcon("img//DuffyDuck.png"));
                        break;
                case 7 : buttons[i]=new JButton(new ImageIcon("img//Tweety.png"));
                        break;
                case 8 : buttons[i]=new JButton(new ImageIcon("img//Slyvester.png"));
                        break;
                case 9 : buttons[i]=new JButton(new ImageIcon("img//RoadRunner.png"));
                        break;
                }

                //Adding number to find easily
                String comand=Integer.toString(i);

                            //Get ImageIcon name
                final String imgName=((ImageIcon)buttons[i].getIcon()).toString();



                buttons[i].addActionListener(new ActionListener(){
                    public void actionPerformed(ActionEvent e){




                        }
                    }
                });
                buttons[i].setActionCommand(comand);

                grid.add(buttons[i]);

          }



    add(grid);



}



public static void main(String[] args){
    butondeneme erdem=new butondeneme();
    erdem.setVisible(true);
}



   }
Run Code Online (Sandbox Code Playgroud)

nIc*_*cOw 5

编辑后:

您只需使用一种JButton.setIcon()方法即可获得所需的效果.虽然可能需要修改它以满足您的需求,但让它适用于您的用例.请关注此附加代码示例:

import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;

public class ButtonIconExample {

    private JButton[] buttons = new JButton[64];
    //private Icon informationIcon = UIManager.getIcon("OptionPane.informationIcon");
    //private Icon errorIcon = UIManager.getIcon("OptionPane.errorIcon");
    private Icon[] icons = {UIManager.getIcon("OptionPane.informationIcon"),
                            UIManager.getIcon("OptionPane.errorIcon"),
                            UIManager.getIcon("OptionPane.warningIcon")};
    private int previousIndex;
    private Random random;

    private ActionListener buttonActions = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent ae) {
            JButton button = (JButton) ae.getSource();
            if (previousIndex == -1)
                previousIndex = Integer.parseInt(button.getActionCommand());
            else {
                Icon previousIcon = buttons[previousIndex].getIcon();
                Icon currentIcon = button.getIcon();
                buttons[previousIndex].setIcon(currentIcon);
                button.setIcon(previousIcon);
                previousIndex = -1;
            }
        }
    };

    public ButtonIconExample() {
        previousIndex = -1;
        random = new Random();
    }

    private void displayGUI() {
        JFrame frame = new JFrame("Button Icon Example");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        JPanel contentPane = new JPanel();
        contentPane.setLayout(new GridLayout(8, 8, 5, 5));
        for (int i = 0; i < buttons.length; i++) {
            buttons[i] = new JButton();
            buttons[i].setIcon(icons[random.nextInt(3)]);
            buttons[i].setActionCommand("" + i);
            buttons[i].addActionListener(buttonActions);
            contentPane.add(buttons[i]);
        }

        frame.setContentPane(contentPane);
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    public static void main(String... args) {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                new ButtonIconExample().displayGUI();
            }
        };
        EventQueue.invokeLater(runnable);
    }
}
Run Code Online (Sandbox Code Playgroud)