Java 通过单击另一个按钮交换两个按钮上的图像

Java 通过单击另一个按钮交换两个按钮上的图像,java,swing,jbutton,swap,Java,Swing,Jbutton,Swap,我有两个按钮,每个按钮上都有一个图像,我希望通过单击另一个(第三个)按钮,可以交换前两个按钮的图像。我已经试过了,但是我遇到了一些错误。请帮忙。我的代码是: import java.awt.*; import java.awt.event.*; import javax.swing.*; class SwapImage implements ActionListener { JButton b1; JButton b2; JButton b3; ImageIcon bgi1; ImageIcon

我有两个按钮,每个按钮上都有一个图像,我希望通过单击另一个(第三个)按钮,可以交换前两个按钮的图像。我已经试过了,但是我遇到了一些错误。请帮忙。我的代码是:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class SwapImage implements ActionListener
{
JButton b1;
JButton b2;
JButton b3;
ImageIcon bgi1;
ImageIcon bgi2;
ImageIcon bgi3=new ImageIcon();

SwapImage()
{
JFrame f=new JFrame("Swap Image");

bgi1=new ImageIcon(getClass().getResource("a.png"));
bgi2=new ImageIcon(getClass().getResource("b.png"));

b1=new JButton(bgi1);
b1.setBounds(80,80,100,100);
//b1.addActionListener(this);

b2=new JButton(bgi2);
b2.setBounds(200,80,100,100);
//b2.addActionListener(this);

b3=new JButton("SWAP");
b3.setBounds(170,230,100,100);
b3.addActionListener(this);

f.add(b1);
f.add(b2);
f.add(b3);
f.setSize(400,400);
f.setLayout(null);
f.setVisible(true);

}

public void actionPerformed(ActionEvent e)
{

bgi3=bgi1;
bgi1=bgi2;
bgi2=bgi3;
b1=new JButton(bgi1);
b2=new JButton(bgi2);

}


public static void main(String s[])
{
new SwapImage();
}

}

在执行的操作中,不要调用:

b1=new JButton(bgi1);
b2=new JButton(bgi2);
相反,只需设置图标:

b1.setIcon(bgi1);
b2.setIcon(bgi2);

什么是错误?@AkshatMalviya我很乐意帮忙。如果此解决方案解决了您的问题,您应该将其标记为正确,以便让其他志愿者知道已提供了一个可接受的答案,通过不打开/阅读已经有答案的问题来节省人们的时间。