last modified: Feb./10th/2002
いままでは、一つの部品に対して一つのリスナーを登録していましたが、複数のリスナーを登録することができます。一つの部品に対して、複数のアクションを拾いたい場合は、一つの部品に対して、複数のリスナーを登録することが必要になります。
次のサンプルは、ボタンとラベルが配置してあり、ボタンには、 ActionListener
と MouseListener
が登録してあります。
このアプレットは、ブラウザが最小化(アイコン化)/別のページに移動/再起動/再読み込みして一時停止したときに、背景色が白に変わり、ボタンによって何度でも色が変えられます。
import java.applet.*; import java.awt.*; import java.awt.event.*; public class MultiListener extends Applet { private Button btnBlue; EventHandler eh = new EventHandler(); private Label label; //リスナー内部クラス class EventHandler implements ActionListener, MouseListener { //ActionListener インタフェースの実装 public void actionPerformed(ActionEvent e) { MultiListener.this.setBackground(Color.blue); } //MouseListener インタフェースの実装 public void mouseEntered(MouseEvent e) { label.setBackground(Color.blue); label.setForeground(Color.white); } public void mouseExited(MouseEvent e) { label.setForeground(Color.black); label.setBackground(Color.white); } //インタフェースのメソッドは全て実装する必要がある public void mouseClicked(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} } //アプレットの初期化 public void init() { //部品の作成 btnBlue = new Button("blue"); label = new Label("Color"); //部品の配置/大きさ btnBlue.setBounds(75, 30, 50, 20); label.setBounds(75, 60, 50, 20); //Label の修飾 label.setAlignment(Label.CENTER); //部品の配置 this.setLayout(null); this.setSize(200, 100); this.add(btnBlue); this.add(label); //イベントリスナーの登録 btnBlue.addActionListener(eh); btnBlue.addMouseListener(eh); } //アプレットの開始 public void start() { this.setBackground(Color.white); System.out.println("Start"); } }
アプレット: MultiListener.class |