アーキテクチャを理解するために必要なことは次のとおりです。まず、ここで使用するデザイン パターンはオブザーバー パターンです。
パブリッシャー/サブスクライバー シナリオの実装。パブリッシャー オブジェクトの状態が変わるたびに、サブスクライバー オブジェクトに通知できるメカニズムが必要です。
実装の詳細については、こちらを参照してください。
しかし、目的が独自の JButton を作成することである場合、最善の方法は JButton をサブクラス化することです。
class MyCustomButton extends JButton{}
JFrame
あなたはどのように持つことができるかについて尋ねましaddMouseListener
た-それJFrame
は extendsのためjava.awt.Component
です。お役に立てれば。
編集
オブザーバーは何もしません。何か変化があれば、被験者はオブザーバーに通知します。これが通知方法です。
public void notify()
{
for (int i=0;i < observers.size();i++)
{
Observer ob = (Observer)observers.get(i);
ob.update(newValue);
}
}
パケットとバケットの例に戻ります - パケット - オブザーバー バケット - サブジェクト
バケットは、新しいパケットがバケットに入ったパケットを配線します。クラスでは Bucket クラスが notify メソッドを呼び出し、登録されているすべてのパケットに通知されます。Packet が Bucket から自身をサブスクライブ解除したい場合は、Unsubscribe メソッドを呼び出すだけで、Bucket の ArrayList からオブジェクトが削除されます。