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