>>106
おれの感覚では

T @〜Bが右クリから何かを起こすまでの処理
U C〜Hが右クリメニューがポップアップしてから実際のプログラム終了までの処理

というように2つの段階があると捉えている


Tは
@(JFrame).addMouseListenerのモナーが
A肩紐ml宣言を通じて
BリュックであるMouseListenerを実装した実際の処理を背負っている
イメージで捉える

フレーム全体にわたってマウスの動きを感知する機能が加えられる
フレーム上でマウスがクリックされると、その震動 e が肩紐Aをつうじて
リュックにつたわりBの実際の処理へとつながる
このとき e がマウスのどの種類のクリックだったのかを分析して
if 文により、それぞれの処理を個別に指定できる
ここでは e が右クリにより生じたとするなら、pmを特定位置でshowしろと指示する


Uは
CDEpmが何なのを説明し、miまでつながる道筋を示す
Fmi.addActionListenerのモナーが
G肩紐al宣言を通じて
HリュックであるActionListenerを実装した実際の処理を背負っている
イメージで捉える


CDEは一応Uに含まれるようなイメージで捉える
Tでの実際の処理としてpmがshowするのだが
pmを宣言するのがC、pmとはJPopupMenu
つまり右クリしたときにぽよんとあらわれる「あれ」の本体とイメージする
「あれ」(JPopupMenu)は当初は姿形がなく、
ここに項目JMenuItemが加えられることで目視できるようになる
JMenuItemは今回のプログラムでは1個だけで、「閉じる」 の項目を示すために使う
「他地域の天気」などの別の項目を加えたいのであれば複数のJMenuItemを宣言し
これを、目では見えないがぽよんの本体であるpm(JPopupMenu)にaddすることになる

mi(JMenuItem)は宣言時に表示文字列をコンストラクタに渡すことになる
そしてこのmiがTのモナーが背負うリュックのさらに上に立つモナーとなるのだ

このmiは>>82-85のbtnと全く同じ位置づけと考えればよい
Fmi.addActionListener(al);というモナーが
G肩紐al宣言を通じて
Hリュックである実際の処理を背負う構図だ

「閉じる」の項目をクリックしたとたんに震動 e がFモナーの足元で生じ
これがGを通してHに伝わり、最終的に e を受けとったactionPerformedメソッドが
System.exit(0)を実行し、プログラムが終了するのだ