ActionListener zu JButton in Java hinzufügen

Rupam Yadav 12 Oktober 2023
  1. Hinzufügen eine ActionListener zu einem JButton unter Verwendung einer anonymen Klasse
  2. Hinzufügen von ActionListener zu JButton mit anonymer Klasse und Lambda
  3. Hinzufügen von ActionListener zu JButton mittels Vererbung
ActionListener zu JButton in Java hinzufügen

Heute besprechen wir die ActionListener-Schnittstelle des java.awt.event und wie man sie zu einem JButton hinzufügt, einer Komponente der JFrame-Klasse im Java Swing Paket.

Hinzufügen eine ActionListener zu einem JButton unter Verwendung einer anonymen Klasse

Im ersten Beispiel erstellen wir eine Klasse JavaExample mit einer Methode main() und in dieser Methode erstellen wir ein JFrame-Objekt. Im JFrame-Fenster erstellen wir drei Komponenten: ein JLabel zum Anzeigen einer Nachricht, ein JTextField zum Aufnehmen einer Eingabe und einen JButton, dem wir den ActionListener hinzufügen.

Um den Listener hinzuzufügen, rufen wir die Funktion addActionListener() der Klasse JButton auf, und in dieser Methode erstellen wir eine anonyme Klasse und überschreiben die Funktion actionPerformed(), die Teil der Schnittstelle ActionListener ist. actionPerformed() ist eine Methode, die aufgerufen wird, wenn eine Aktion ausgeführt wird.

In der Methode actionPerformed() prüfen wir zuerst, ob etwas im JTextField steht, und wenn das Textfeld leer ist, zeigen wir eine Nachricht mit JLabel an. Andernfalls zeigen wir die Nachricht an, die wir in das Textfeld schreiben.

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);
  }
}

Ausgabe:

Actionlistener zu jbutton1 hinzufügen

Hinzufügen von ActionListener zu JButton mit anonymer Klasse und Lambda

In Java 8 wurden Lambda-Ausdrücke hinzugefügt, die wir in diesem Beispiel verwenden würden. Alles ist dasselbe wie im vorherigen Beispiel, aber im Programm erstellen wir eine Methode buttonPressed(), und in dieser Funktion drucken wir die in das Textfeld geschriebene Nachricht auf ein JLabel.

Um den ActionListener zum JButton hinzuzufügen, verwenden wir die Funktion addActionListener(), und in dieser Methode verwenden wir den Lambda-Ansatz. Wir verwenden den Parameter e, der ein ActionEvent-Objekt ist, und rufen dann die buttonPressed()-Methode auf.

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");
    }
  }
}

Ausgabe:

Actionlistener zu jbutton2 hinzufügen

Hinzufügen von ActionListener zu JButton mittels Vererbung

In diesem Programm fügen wir den ActionListener hinzu, indem wir das Konzept der Vererbung verwenden.

Wir erstellen eine Klasse JavaExample und erweitern dann die Klasse JFrame und implementieren die Schnittstelle ActionListener. Wir müssen die Methode actionPerformed() überschreiben, die Teil der Schnittstelle ActionListener ist.

Wir deklarieren die Komponentenvariablen JFrame ausserhalb der Methode main(), weil wir sie ausserhalb der Funktion verwenden müssen. Wir erstellen einen Konstruktor der Klasse JavaExample und setzen alle Komponenten darin.

Um den ActionListener zur JButton-Komponente hinzuzufügen, rufen wir die addActionListener()-Methode auf und übergeben this, das auf den Kontext der aktuellen Klasse zeigt, da die aktuelle Klasse JavaExample den ActionListener implementiert ein gültiger Kontext, um die Funktion zu übergeben.

In die Funktion actionPerformed() schreiben wir die Operationen, die wir ausführen wollen, wenn die Taste gedrückt wird. In der Methode main() erstellen wir eine Instanz von JFrame und legen deren Layout und Sichtbarkeit fest.

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");
    }
  }
}

Ausgabe:

Actionlistener zu jbutton3 hinzufügen

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

Verwandter Artikel - Java Swing

Verwandter Artikel - Java JLabel