2011-07-25 19 views
1

私はスペイン語動詞を結合するGUIを作っています。これは、主データ構造としてTreeMapを利用し、動詞クラスのインスタンス化で満たされます。各インスタンシエーションには、 "hablar"や "escribir"のような動詞の不定形を含むStringが含まれています。 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の複雑なロジックでは、サブクラス化の代わりに委譲を使用する方が良いと思います。 –

関連する問題