Java の JButton に ActionListener を追加する

Rupam Yadav 2023年10月12日
  1. 匿名クラスを使用して ActionListenerJButton に追加する
  2. 匿名クラスと Lambda を使用して ActionListenerJButton に追加する
  3. 継承を使用して ActionListenerJButton に追加する
Java の JButton に ActionListener を追加する

今日は、java.awt.eventActionListener インターフェースと、それを Java Swing パッケージの JFrame クラスのコンポーネントである JButton に追加する方法について説明します。

匿名クラスを使用して ActionListenerJButton に追加する

最初の例では、メソッド main() を使用してクラス JavaExample を作成し、そのメソッドで JFrame オブジェクトを作成します。JFrame ウィンドウで、メッセージを表示する JLabel、入力を受け取る JTextField、および ActionListener を追加する JButton の 3つのコンポーネントを作成します。

リスナーを追加するには、JButton クラスの addActionListener() 関数を呼び出します。このメソッドでは、匿名クラスを作成し、ActionListener インターフェイスの一部である actionPerformed() 関数をオーバーライドします。actionPerformed() は、アクションが実行されたときに呼び出されるメソッドです。

actionPerformed() メソッドでは、最初に JTextField に何かがあるかどうかを確認し、テキストフィールドが空の場合は、JLabel を使用してメッセージを表示します。それ以外の場合は、テキストフィールドに書き込んだメッセージを表示します。

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class JavaExample {
  public static void main(String[] args) {
    JFrame jFrame = new JFrame("Java Example");

    JLabel jLabel = new JLabel();
    jLabel.setBounds(50, 150, 350, 40);

    final JTextField jTextField = new JTextField();
    jTextField.setBounds(50, 50, 150, 20);

    JButton jButton = new JButton("Submit");
    jButton.setBounds(50, 100, 100, 30);

    jButton.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        if (!jTextField.getText().equals(""))
          jLabel.setText(jTextField.getText());
        else
          jLabel.setText("Please write something in the edit box");
      }
    });
    jFrame.add(jLabel);
    jFrame.add(jButton);
    jFrame.add(jTextField);
    jFrame.setSize(400, 400);
    jFrame.setLayout(null);
    jFrame.setVisible(true);
  }
}

出力:

actionlistener を jbutton に追加します

匿名クラスと Lambda を使用して ActionListenerJButton に追加する

Java 8 では、この例で使用する Lambda 式が追加されました。すべて前の例と同じですが、プログラムでメソッド buttonPressed() を作成し、その関数で、テキストフィールドに書き込まれたメッセージを JLabel に出力します。

ActionListenerJButton に追加するには、addActionListener() 関数を使用し、そのメソッドでは、ラムダアプローチを使用します。ActionEvent オブジェクトであるパラメータ e を使用してから、buttonPressed() メソッドを呼び出します。

import javax.swing.*;

public class JavaExample {
  static JTextField jTextField;
  static JLabel jLabel;

  public static void main(String[] args) {
    JFrame jFrame = new JFrame("Java Example");

    jLabel = new JLabel();
    jLabel.setBounds(50, 150, 350, 40);

    jTextField = new JTextField();
    jTextField.setBounds(50, 50, 150, 20);

    JButton jButton = new JButton("Submit");
    jButton.setBounds(50, 100, 100, 30);

    jButton.addActionListener(e -> buttonPressed());

    jFrame.add(jLabel);
    jFrame.add(jButton);
    jFrame.add(jTextField);

    jFrame.setSize(400, 400);
    jFrame.setLayout(null);
    jFrame.setVisible(true);
  }

  static void buttonPressed() {
    if (!jTextField.getText().equals("")) {
      jLabel.setText(jTextField.getText());
    } else {
      jLabel.setText("Please write something in the edit box");
    }
  }
}

出力:

actionlistener を jbutton に追加します

継承を使用して ActionListenerJButton に追加する

このプログラムでは、継承の概念を使用して ActionListener を追加します。

クラス JavaExample を作成してから、クラス JFrame を拡張し、ActionListener インターフェースを実装します。ActionListener インターフェースの一部である actionPerformed() メソッドをオーバーライドする必要があります。

関数の外で使用する必要があるため、main() メソッドの外で JFrame コンポーネント変数を宣言します。JavaExample クラスのコンストラクターを作成し、その中にすべてのコンポーネントを設定します。

ActionListenerJButton コンポーネントに追加するには、addActionListener() メソッドを呼び出し、this を渡します。これは、現在のクラス JavaExampleActionListener を実装するときに、現在のクラスのコンテキストを指します。関数を渡すための有効なコンテキスト。

actionPerformed() 関数では、ボタンが押されたときに実行する操作を記述します。main() メソッドでは、JFrame のインスタンスを作成し、そのレイアウトと可視性を設定します。

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class JavaExample extends JFrame implements ActionListener {
  static JTextField jTextField;
  static JLabel jLabel;
  static JButton jButton;

  public static void main(String[] args) {
    JFrame jFrame = new JavaExample();
    jFrame.setLayout(null);
    jFrame.setVisible(true);
  }

  public JavaExample() {
    jLabel = new JLabel();
    jLabel.setBounds(50, 150, 350, 40);

    jTextField = new JTextField();
    jTextField.setBounds(50, 50, 150, 20);

    jButton = new JButton("Submit");
    jButton.setBounds(50, 100, 100, 30);

    jButton.addActionListener(this);

    add(jLabel);
    add(jButton);
    add(jTextField);

    setSize(400, 400);
  }

  @Override
  public void actionPerformed(ActionEvent e) {
    if (!jTextField.getText().equals("")) {
      jLabel.setText(jTextField.getText());
    } else {
      jLabel.setText("Please write something in the edit box");
    }
  }
}

出力:

actionlistener を jbutton に追加します

著者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

関連記事 - Java Swing

関連記事 - Java JLabel