链接通用的ObservableMap和MapChangeListener

时间:2018-09-12 09:46:59

标签: java javafx

我目前在了解如何正确地将ObservableMapMapChangeListener链接起来方面遇到问题。

我需要创建一个通用的ObservableMap,因为我将在视图中显示具有不同键/值类型的不同地图。

到目前为止我所做的:

地图:

public class DrawableMap<K, V> extends HashMap<K, V>, implements ObservableMap<K, V> 
{
    private ArrayList<MapChangeListener<K, V>> observerList = new ArrayList<>();

    DrawableMap()
    {
         super();
    }

    @Override
    public void addListener(MapChangeListener listener)
    {
          observerList.add(listener);
    }

    @Override
    public void removeListener(MapChangeListener listener)
    {
          observerList.remove(listener);
    }

视图:

public class View<K, V> implements MapChangeListener<K, V>
{
     @Override
     OnChanged(Change<? extends K, ? extends V> arg)
     { 
          //Don't know what to put in here.
     }
}

我不确定使用泛型,因此我不确定。

例如,一个视图将在面板上显示一些Shape节点。这些形状将作为键存储在地图上。但是,我很难理解如何通知观察者,一旦收到通知,请检查已进行了哪些更改以更新视图。 onChanged什么时候被叫?

我应该在notifyOberserver()内创建一个DrawableMap方法吗? 像这样:

public void notifyObservers()
    {
          for(MapChangeListener listener : observerList)
          {
               //Do something
          }
    }

谢谢您的帮助。

0 个答案:

没有答案