我正在製作一個結合西班牙動詞的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