PopupMenu(2)

ポップアップメニューに、新しいイベントモデルによる アクションの処理をつけ加えます。
ここでは、イベント処理はすべてアプレットの中のメソッドで行うことに します。 そのためアプレットには、マウスのクリックのイベントを受け付けるための MouseListener、メニューアイテムからのアクションの処理を受け付けるための ActionListner をインプリメントします。


public class PopupSample2 extends Applet
                          implements MouseListener, ActionListener {

これらのインターフェイスを実装するクラスは、 それぞれ名前が決めたれたメソッドの内容を定義します。 仮に処理する内容が必要ない場合でも形式的に記述する必要があります。


   /** マウスのクリックの処理のメソッド */

      public void mousePressed( MouseEvent evt ){

           menu.show( this, evt.getX(), evt.getY() );  // メニューの出現
      }

      public void mouseClicked( MouseEvent evt ){
      }

      public void mouseReleased( MouseEvent evt ){
      }

      public void mouseEntered( MouseEvent evt ){
      }

      public void mouseExited( MouseEvent evt ){
      }

   /** アクション処理の内容 */

      public void actionPerformed( ActionEvent evt ){

             String label = ((MenuItem)evt.getSource()).getLabel();

             if( label == "Red" ) {

                 setBackground( Color.red );
             }
             else if( label == "Green" ) {

                 setBackground( Color.green );
             }
             else if( label == "Blue" ) {

                 setBackground( Color.blue );
             }
      }
}

ここのメニューアイテムは独立したアクションを呼び出すことができますが、 ここではアプレットの actionPerformed() メソッドの中に処理を まとめまてみました。
 新しいイベントモデルのイベントのオブジェクトは、 そのフィールド(変数)がすべて protectedなので、 アクセスするためには専用のメソッドを用います。