PropertyChangeListener
に関する短い質問があります。2つの変更リスナーが両方とも変更されるのを待つ
私はPerson
の3つの属性を持つクラスを持っています。それらのうちの2つは、人が地図上に持っている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