关于 ImageIcons 的方法不起作用

Yuh*_* Su 5 java swing actionlistener imageicon

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;


public class Cards extends JFrame {

private GridLayout grid1;

    JButton []bt=new JButton[52];

    ImageIcon tail=new ImageIcon(getClass().getResource("b1fv.png"));

    ImageIcon ori;

    public Cards(){
        grid1=new GridLayout(7,9,2,2);
        setLayout(grid1);
        for(int i=0;i<bt.length;i++){
            ImageIcon c=new ImageIcon(getClass().getResource(i+1+".png"));
            bt[i]=new JButton(c);
            bt[i].addActionListener(new RatingMouseListener(i));
            add( bt[i]);
        }
    }

    public static void main(String[] args){
        Cards frame=new Cards();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(1400,700);
        frame.setVisible(true);
    }

    private class RatingMouseListener implements ActionListener {
        private  int index=0;


        public RatingMouseListener(int index) {
            this.index = index;

        }




        public void actionPerformed(ActionEvent e) {
              System.out.println("Mouse entered for rating " + index);
            ori=new ImageIcon(getClass().getResource(index+1+".png"));

            if (bt[index].getIcon()==ori)
                bt[index].setIcon(tail);
             else
                bt[index].setIcon(ori);



        }

    }



}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我希望 ori 和 tail 应该交换。但他们没有。有人能帮我吗?

Pea*_*oto 3

这最好通过描述标签来完成。

基本上,将描述设置为如下图像,然后如果它们具有相同的描述则交换它们。

ori.setDescription("ori");
tail.setDescription("tail");

if ("ori".equals((ImageIcon)bt[index].getIcon()).getDescription())
// The rest is how you had it.
Run Code Online (Sandbox Code Playgroud)