我正在制作一个结合西班牙动词的GUI。它利用一个TreeMap作为主要的数据结构,它充满了动词类的实例。每个实例都包含一个包含动词不定式形式的字符串,如“hablar”或“escribir”。在GUI中有一个功能,允许用户输入一个新的动词,通过输入其不定式及其英文翻译。如何让侦听器侦听TreeMap中的更改?
我想知道如何创建一个侦听器,每次从TreeMap添加或删除新动词时都会运行一些代码。我会如何去做这件事?
我正在制作一个结合西班牙动词的GUI。它利用一个TreeMap作为主要的数据结构,它充满了动词类的实例。每个实例都包含一个包含动词不定式形式的字符串,如“hablar”或“escribir”。在GUI中有一个功能,允许用户输入一个新的动词,通过输入其不定式及其英文翻译。如何让侦听器侦听TreeMap中的更改?
我想知道如何创建一个侦听器,每次从TreeMap添加或删除新动词时都会运行一些代码。我会如何去做这件事?
您可以创建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;
}
}
@idungotnosn:看看oberserver模式,JSE中提供了一个基本实现:http://download.oracle.com/javase/6/docs/api/java/util/Observer.html – home
如果将要发布更多MyTreeMap中复杂的逻辑,我认为使用委托代替子类更好。 –
好问题。这似乎是可能有用的东西。我不相信我以前见过它,但你可能能够继承课程并创建自己的课程。 – Nicholas