Сравнить две иконки изображения? - PullRequest
1 голос
/ 29 ноября 2011

Я столкнулся с проблемой во время игры в шахматы для 4 игроков. Я не могу увидеть, совпадают ли два ImageIcons. У меня есть четыре массива для красных, синих, зеленых и желтых фигур, и моя идея состояла в том, чтобы посмотреть, соответствует ли какой-то фрагмент, на который игрок нажал, какой-либо части в их цветовой матрице. Однако, если я скажу как if (colorIcon.equals (clickedIcon)), он вернет false. Я знаю, это потому, что .equals () ссылается на ссылку, и я создаю новое место в памяти. Так можно ли сравнить два ImageIcons? Спасибо за чтение!

Ответы [ 3 ]

1 голос
/ 29 ноября 2011

Вы всегда можете сделать:

public class MyImageIcon extends ImageIcon{
   String imageColor;
   // Getters and setters...  
   // Appropriate constructor here.
   MyImageIcon(Image image, String description, String color){
       super(image, description);
       imageColor = color;
   }
   @Override
   public bool equals(Object other){
      MyImageIcon otherImage = (MyImageIcon) other;
      if (other == null) return false;
      return imageColor == other.imageColor;
   }
}

И используйте этот класс вместо необработанного ImageIcon

Вместо:

ImageIcon myImage = new ImageIcon(imgURL, description);

вы бы имели:

MyImageIcon myImage = new MyImageIcon (imgURL, description, "RED");
0 голосов
/ 29 января 2017

Это действительно просто, как это:

ImageIcon i=new ImageIcon("getClass().getResource("image.jpg");//this is the image you want to compare to jLabel's icon
if(jLabel1.getIcon().equals(i){
  //...do something
}
0 голосов
/ 29 ноября 2011

.equals() не относится к той же ссылке на память.Это метод, который сравнивает объекты;== сравнивает ссылки.

...