4 명이 체스 게임을하는 동안 문제가 발생했습니다. 2 개의 ImageIcon이 같은지 알 수가 없습니다. 나는 빨강, 파랑, 녹색 및 노란색 조각을위한 네 개의 배열을 가지고 있으며, 플레이어가 클릭 한 부분이 색상 배열의 조각과 일치하는지 확인하는 것이 나의 아이디어였습니다. 그러나 if if (colorIcon.equals (clickedIcon))와 같이 말하면 false를 반환합니다. .equals()가 참조를 참조하고 메모리에 새로운 공간을 만들고 있기 때문입니다. 그렇다면 두 개의 ImageIcon을 비교할 수있는 방법이 있습니까? reaading 주셔서 감사합니다!두 이미지 아이콘을 비교합니까?
답변
당신은 항상 수행 할 수 있습니다
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 myImage = new ImageIcon(imgURL, description);
당신이 가진 것 :
MyImageIcon myImage = new MyImageIcon (imgURL, description, "RED");
.equals()
은 동일한 메모리 참조를 참조하지 않습니다. 객체를 비교하는 방법입니다. 참조를 비교하는 것은 ==
입니다.
ImageIcon 클래스는 상속하지만'Object'의'equals' 메소드를 구현하지 않습니다. java doc에 따른'Object.equals'는 다음과 같습니다. "Object 클래스의 equals 메소드는 객체에 대해 가장 분별력있는 등가 관계를 구현합니다. 즉, null이 아닌 참조 값 x 및 y에 대해이 메소드는 true를 반환합니다. x와 y는 ** 같은 ** 객체 **를 참조합니다 (x == y는 값을가집니다). ** "그러므로,'equals'와'=='는 ImageIcon 클래스에서 똑같습니다. – GETah
감사합니다. 그게 내가 의미하는 바 였어. – D347th
그 정말 간단 :
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
}
- 1. 날짜가 두 날짜를 비교합니까?
- 2. 두 서버의 GAC를 비교합니까?
- 3. 두 이미지의 특정 영역의 히스토그램을 비교합니까? OpenCV
- 4. 두 xml 파일을 xslt와 비교합니까?
- 5. Excel - 두 개의 문서를 비교합니까?
- 6. 두 AssemblyName 인스턴스를 어떻게 비교합니까?
- 7. 같은 테이블에있는 두 개의 열을 어떻게 비교합니까?
- 8. .NET 컴파일러는 두 문자열을 어떻게 비교합니까?
- 9. PHP 두 항목으로 된 항목을 비교합니까?
- 10. 는 mysql -indexes의 두 필드를 비교합니까?
- 11. SQL : 두 단어를 어떻게 조각으로 비교합니까?
- 12. PHP는 MSSQL 쿼리를 호출하고 두 날짜를 비교합니까?
- 13. 분당 datetime을 기준으로 두 파일을 비교합니까?
- 14. 두 개의 바이트 배열을 비교합니까? (Java)
- 15. 재귀 적으로 동등성을 위해 두 세트를 비교합니까?
- 16. 어떻게 장고에서 두 모델 필드를 서로 비교합니까?
- 17. 기본 클래스를 기반으로 두 개체를 어떻게 비교합니까?
- 18. JTable에서 이미지 아이콘을 얻는 방법
- 19. 이미지/아이콘을 사용하는 라이센스 모델
- 20. 버튼에 이미지 아이콘을 추가 하시겠습니까?
- 21. 두 테이블 중 하나의 날짜를 기준으로 두 테이블의 값을 비교합니까?
- 22. Word 파일과 폴더의 그림을 비교합니까?
- 23. if 문없이 정수를 비교합니까?
- 24. jQuery 객체를 어떻게 비교합니까?
- 25. PHP에서 날짜를 비교합니까?
- 26. PHP에서 여러 데이터를 비교합니까?
- 27. 2 NSArrays을 비교합니까?
- 28. 이미지 아이콘을 클릭하면 특정 DIV에 addClass가 표시됩니다.
- 29. 이미지 파일에서 원 아이콘을 만드는 방법은 무엇입니까?
- 30. 이미지에서 아이콘을 설정하는 방법 (갤러리의 이미지)
당신은 ImageIcons를 비교해서는 안된다. 체스 말을 대표하는 수업이 있나요? 그렇다면 대신 체스 조각의 유형을 비교해야합니다. 문제를 해결하기 위해 이미지 아이콘을 비교할 필요가있는 경우 코드에 디자인 문제가 있다고 생각합니다. – gigadot