
Tablica informująca o zmianie zawartości (Java)
Tak to jest, gdy komuś się nudzi … A oto skutki:
Klasa AArray
package beans3;
import java.beans.*;
import java.io.*;
public class AArray<T> implements Serializable {
private static final long serialVersionUID = 7344843959863070245L;
private T[] array;
private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);
public AArray(T[] array) {
this.array = array;
}
public synchronized void addPropertyChangeListener(
PropertyChangeListener list) {
pcs.addPropertyChangeListener(list);
}
public synchronized void removePropertyChangeListener(
PropertyChangeListener list) {
pcs.removePropertyChangeListener(list);
}
public T[] getArray() {
return array;
}
public synchronized void setValue(int index, T newValue) {
T oldValue = array[index];
array[index] = newValue;
pcs.firePropertyChange("zmiana w array[" + index + "]",
oldValue, newValue);
}
}
Klasa Main
package beans3;
public class Main{
public Main(){
AArray<Integer> tablica = new AArray<>(new Integer[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12});
tablica.addPropertyChangeListener(evt -> {
Integer newValue = (Integer)evt.getNewValue();
System.out.println(evt.getPropertyName() + " na " + newValue);
});
for(int i = 0; i < tablica.getArray().length; i++){
tablica.setValue(i, i * 2);
}
}
public static void main(String[] args) {
new Main();
}
}
Tablica AArray informuje o każdej zmianie zawartości:
zmiana w array[1] na 2 zmiana w array[2] na 4 zmiana w array[3] na 6 zmiana w array[4] na 8 zmiana w array[5] na 10 zmiana w array[6] na 12 zmiana w array[7] na 14 zmiana w array[8] na 16 zmiana w array[9] na 18 zmiana w array[10] na 20 zmiana w array[11] na 22 zmiana w array[12] na 24
