2011-07-25 58 views
1

我正在制作一个结合西班牙动词的GUI。它利用一个TreeMap作为主要的数据结构,它充满了动词类的实例。每个实例都包含一个包含动词不定式形式的字符串,如“hablar”或“escribir”。在GUI中有一个功能,允许用户输入一个新的动词,通过输入其不定式及其英文翻译。如何让侦听器侦听TreeMap中的更改?

我想知道如何创建一个侦听器,每次从TreeMap添加或删除新动词时都会运行一些代码。我会如何去做这件事?

+0

好问题。这似乎是可能有用的东西。我不相信我以前见过它,但你可能能够继承课程并创建自己的课程。 – Nicholas

回答

5

您可以创建TreeMap类的子类,例如。

public class MyTreeMap<K, V> extends TreeMap<K, V> { 
    @Override 
    public V put(K key, V val) { 
     V ret = super.put(key, val); 
     myAddCallback(key, val); 
     return ret; 
    } 

    @Override 
    public V remove(K key) { 
     V ret = super.remove(key); 
     myRemoveCallback(key); 
     return ret; 
    } 
} 

另一个(显著更多地参与)选择是检查出AspectJ,一个AOP基础的JRE。

+0

@idungotnosn:看看oberserver模式,JSE中提供了一个基本实现:http://download.oracle.com/javase/6/docs/api/java/util/Observer.html – home

+1

如果将要发布更多MyTreeMap中复杂的逻辑,我认为使用委托代替子类更好。 –