Java 互连的两个ActionListener

Java 互连的两个ActionListener,java,swing,jbutton,actionlistener,imageicon,Java,Swing,Jbutton,Actionlistener,Imageicon,我想做一个像Bejeweld或candycrush这样的游戏作为家庭作业。我想更改单击的两个按钮的图片。例如,我单击了按钮[5],然后单击了按钮[11]。那么按钮[5]的图标应该是按钮[11]图标,[11]的图标应该是按钮[5]图标。所以我需要两个相互连接的ActionListener。我该怎么办 public class butondeneme extends JFrame{ private JPanel grid; private JFrame jr; public String x,y;

我想做一个像Bejeweld或candycrush这样的游戏作为家庭作业。我想更改单击的两个按钮的图片。例如,我单击了按钮[5],然后单击了按钮[11]。那么
按钮[5]
的图标应该是
按钮[11]
图标,
[11]
的图标应该是
按钮[5]
图标。所以我需要两个相互连接的
ActionListener
。我该怎么办

public class butondeneme extends JFrame{

private JPanel grid;
private JFrame jr;
public String x,y;

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];


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


                String comand=Integer.toString(i);
                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);
}



}
公共类Butoneneme扩展JFrame{
私有JPanel网格;
私人JFrame jr;
公共字符串x,y;
公共丁烯酮(){
jr=新的JFrame();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
立根(100100640640);
grid=newjpanel();
setboorder(BorderFactory.createEmptyBorder(5,5,5,5));
网格布局(新网格布局(8,8,5,5));
JButton[]按钮=新JButton[64];

对于(int i=0;i您可以将
ActionListener
的一个实例分配给所有按钮,大致如下所示:

class ButtonActionListener extends ActionListener {
    private JButton previousButton = null;

    @Override
    public void actionPerformed(ActionEvent e){
        JButton currentButton = (JButton)e.getSource();
        if (previousButton == null) {
            previousButton = currentButton;
            return;
        }

        Icon previousIcon = previousButton.getIcon();
        Icon currentIcon = currentButton.getIcon();
        currentButton.setIcon(previousIcon);
        previousButton.setIcon(currentIcon);
        previousButton = null;
    }
}
创建按钮的位置:

ActionListener buttonActionListener = new ButtonActionListener();
for (int i = 0; i<buttons.length; i++) {
    ...
    buttons[i] = new JButton(...);

    buttons[i].addActionListener(buttonActionListener);
}
ActionListener buttonActionListener=新建buttonActionListener();

对于(int i=0;i您可以将
ActionListener
的一个实例分配给所有按钮,大致如下所示:

class ButtonActionListener extends ActionListener {
    private JButton previousButton = null;

    @Override
    public void actionPerformed(ActionEvent e){
        JButton currentButton = (JButton)e.getSource();
        if (previousButton == null) {
            previousButton = currentButton;
            return;
        }

        Icon previousIcon = previousButton.getIcon();
        Icon currentIcon = currentButton.getIcon();
        currentButton.setIcon(previousIcon);
        previousButton.setIcon(currentIcon);
        previousButton = null;
    }
}
创建按钮的位置:

ActionListener buttonActionListener = new ButtonActionListener();
for (int i = 0; i<buttons.length; i++) {
    ...
    buttons[i] = new JButton(...);

    buttons[i].addActionListener(buttonActionListener);
}
ActionListener buttonActionListener=新建buttonActionListener();

对于(int i=0;i您可以将
ActionListener
的一个实例分配给所有按钮,大致如下所示:

class ButtonActionListener extends ActionListener {
    private JButton previousButton = null;

    @Override
    public void actionPerformed(ActionEvent e){
        JButton currentButton = (JButton)e.getSource();
        if (previousButton == null) {
            previousButton = currentButton;
            return;
        }

        Icon previousIcon = previousButton.getIcon();
        Icon currentIcon = currentButton.getIcon();
        currentButton.setIcon(previousIcon);
        previousButton.setIcon(currentIcon);
        previousButton = null;
    }
}
创建按钮的位置:

ActionListener buttonActionListener = new ButtonActionListener();
for (int i = 0; i<buttons.length; i++) {
    ...
    buttons[i] = new JButton(...);

    buttons[i].addActionListener(buttonActionListener);
}
ActionListener buttonActionListener=新建buttonActionListener();

对于(int i=0;i您可以将
ActionListener
的一个实例分配给所有按钮,大致如下所示:

class ButtonActionListener extends ActionListener {
    private JButton previousButton = null;

    @Override
    public void actionPerformed(ActionEvent e){
        JButton currentButton = (JButton)e.getSource();
        if (previousButton == null) {
            previousButton = currentButton;
            return;
        }

        Icon previousIcon = previousButton.getIcon();
        Icon currentIcon = currentButton.getIcon();
        currentButton.setIcon(previousIcon);
        previousButton.setIcon(currentIcon);
        previousButton = null;
    }
}
创建按钮的位置:

ActionListener buttonActionListener = new ButtonActionListener();
for (int i = 0; i<buttons.length; i++) {
    ...
    buttons[i] = new JButton(...);

    buttons[i].addActionListener(buttonActionListener);
}
ActionListener buttonActionListener=新建buttonActionListener();

对于(int i=0;我非常感谢你。我是我想要的。但是,我不理解模型视图conroller,因为我现在对java不是很在行。不过,非常感谢。非常感谢。我就是我想要的。但是,我不理解模型视图conroller,因为我现在对java不是很在行。不过,非常感谢。谢谢你非常感谢。我就是我想要的。但是,我不理解模型视图conroller,因为我现在对java不是很在行。不过,非常感谢。非常感谢。我就是我想要的。但是,我不理解模型视图conroller,因为我现在对java不是很在行。不过,非常感谢。