Frage

Ich bin auf ein Problem gestoßen, während ich ein 4 -Spieler -Schachspiel mache. Ich kann nicht sehen, ob zwei ImageCons gleich sind. Ich habe vier Arrays für die roten, blauen, grünen und gelben Stücke und meine Idee war zu sehen, ob das Stück, auf das der Spieler geklickt hat, einem der Teile in seinem Farbarray übereinstimmte. Wenn ich jedoch sage, ob (Coloricon.equals (Clickedicon)) es falsch zurückgibt. Ich weiß, das liegt daran, dass .Equals () auf die Referenz bezieht und ich neue Raum im Gedächtnis habe. Gibt es also eine Möglichkeit, zwei ImageCons zu vergleichen? Danke für das Reading!

War es hilfreich?

Lösung

Sie können immer:

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

Und verwenden Sie diese Klasse anstelle eines rohen Bildicons

Anstatt:

ImageIcon myImage = new ImageIcon(imgURL, description);

du würdest haben:

MyImageIcon myImage = new MyImageIcon (imgURL, description, "RED");

Andere Tipps

.equals() Bezieht sich nicht auf dieselbe Speicherreferenz. Es ist eine Methode, die die Objekte vergleicht; es ist == Das vergleicht die Referenzen.

Es ist wirklich einfach:

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
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top