Java での複数のアクション リスナー

Suraj P 2023年10月12日
  1. Java で ActionListener を書く
  2. Java での複数のアクション リスナー
Java での複数のアクション リスナー

この記事では、Java で複数のアクション リスナーを作成する方法を説明します。

Java では、ActionListener はアクション イベントを処理するためのクラスです。 したがって、Java はこのインターフェースを提供します。これを使用して、ユーザーがボタンをクリックした場所を見つけ、イベントを生成して、ボタンがクリックされるたびに何かを印刷したり、何かを計算したりするなどのアクションを実行します。

ここでは、Java Swing プロジェクトで複数のボタンに対して複数のアクション リスナーを作成する方法を説明します。

まず、アクション リスナーの書き方を見てみましょう。

Java で ActionListener を書く

Java では、java.awt.event パッケージには、actionPerformed() のみを含む ActionListener インターフェイスが含まれています。 インターフェースであるため、ActionListener を記述する一般的な方法は、ActionListener インターフェースを実装することです。

ActionListener を実装するときは、次の手順に従う必要があります。

  1. クラスは ActionListener インターフェイスを実装する必要があります。

    public class test implements ActionListener
    
  2. リスナーでボタンのようなコンポーネントを追加します。

    Button b = new Button("Click Here");
    b.addActionListener(this);
    
  3. 最後のステップは、唯一のインターフェース メソッド、つまり actionPerformed() メソッドをオーバーライドすることです。

コード例:

import java.awt.*;
import java.awt.event.*;

public class test implements ActionListener // 1st step
{
  public test() // constructor
  {
    Button b = new Button("Click Here");
    // 2nd step
    b.addActionListener(this);
    // our code.....
  }
  // 3rd step
  public void actionPerformed(ActionEvent evt) {
    // our code
  }

  public static void main(String args[]) {
    Test t = new Test();
  }
}

ActionListener を実装するために匿名クラスが使用されることもあります。 簡単で簡潔な書き方であるため、最も好ましい方法です。

Button b = new Button("Click Here");
b.addActionListner(new ActionListener() {
  @Override
  public void actionPerformed(ActionEvent evt) {
    // some action
  }
});

Java での複数のアクション リスナー

上記の内容を拡張するだけで、複数のアクション リスナーを作成できます。

コード例: 匿名クラスの使用

JButton multiplyButton = new JButton(new AbstractAction("multiply") {
  @Override
  public void actionPerformed(ActionEvent evt) {
    // some action
  }
});

JButton divideButton = new JButton(new AbstractAction("divide") {
  @Override
  public void actionPerformed(ActionEvent evt) {
    // some action
  }
});
著者: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub