PropertyChangeListener
에 관한 간단한 질문이 있습니다.두 변경 리스너가 모두 변경 될 때까지 기다려주십시오
나는 3 개의 속성을 가진 Person
클래스를 가지고 있습니다. 그 중 두 개는 사람이지도 상에 가지고있는 x
과 y
좌표입니다.
사람의 좌표가 변경 될 때마다지도를 업데이트하고 싶습니다. 그래서 내 문제는 x
또는 y
변경뿐만 아니라 모두 감지 할 때입니다.
그게 내가 가지고있는 정도입니다. 네가 나를 도울 수 있기를 바랍니다.
Person.java :
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
public class Person {
private int x, y, hp;
private PropertyChangeSupport changes = new PropertyChangeSupport(this);
public Person (int x, int y) {
this.x = x;
this.y = y;
}
public void setX(int x) {
int oldX = x;
this.x = x;
changes.firePropertyChange("x", oldX, x);
}
public void setY(int y) {
int oldY = y;
this.y = y;
changes.firePropertyChange("y", oldY, y);
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public void addPropertyChangeListener(PropertyChangeListener l) {
changes.addPropertyChangeListener(l);
}
public void removePropertyChangeListener(PropertyChangeListener l) {
changes.removePropertyChangeListener(l);
}
}
Map.java :
private void initPeople() {
people = new Person[amount];
PropertyChangeSupport
for (Person p : people) {
person.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent e) {
// IF Person x AND y changed DO something
}
});
}
}
글쎄, 각'Person'의 위치를 (별개의 상태로서) 알아 내고 변경된 값들에 대해 그 값들을 검사 할 필요가 있습니다. 그렇지 않으면'Person' 내에서 검사를 수행하고 별도의 "위치 변경"속성 두 이벤트가 변경된 경우에만 이벤트가 변경됨 – MadProgrammer