2011-07-25 203 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中複雜的邏輯,我認爲使用委託代替子類更好。 –