在 Java 中將 ActionListener 新增到 JButton

Rupam Yadav 2023年1月30日 2022年4月22日
  1. 使用匿名類將 ActionListener 新增到 JButton
  2. 使用匿名類和 Lambda 將 ActionListener 新增到 JButton
  3. 使用繼承將 ActionListener 新增到 JButton
在 Java 中將 ActionListener 新增到 JButton

今天我們將討論 java.awt.eventActionListener 介面以及如何將它新增到 JButton,它是 Java Swing 包中 JFrame 類的一個元件。

使用匿名類將 ActionListener 新增到 JButton

在第一個示例中,我們使用方法 main() 建立了一個類 JavaExample,並在該方法中建立了一個 JFrame 物件。在 JFrame 視窗中,我們建立三個元件:一個 JLabel 來顯示訊息,一個 JTextField 來接受輸入,以及一個 JButton,我們將新增 ActionListener

為了新增監聽器,我們呼叫 JButton 類的 addActionListener() 函式,在這個方法中,我們建立一個匿名類並覆蓋 ActionListener 介面的一部分 actionPerformed() 函式. actionPerformed() 是一種在執行操作時呼叫的方法。

actionPerformed() 方法中,我們首先檢查 JTextField 中是否有任何內容,如果 Text Field 為空,則使用 JLabel 顯示一條訊息。否則,我們將顯示我們在文字欄位中寫入的訊息。

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

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

輸出:

將動作監聽器新增到 jbutton 1

使用匿名類和 Lambda 將 ActionListener 新增到 JButton

在 Java 8 中,新增了我們將在本示例中使用的 Lambda 表示式。一切都與前面的示例相同,但在程式中,我們建立了一個方法 buttonPressed(),並在該函式中,我們將文字欄位中寫入的訊息列印到 JLabel

要將 ActionListener 新增到 JButton,我們使用 addActionListener() 函式,在該方法中,我們使用 lambda 方法。我們使用作為 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");
        }
    }
}

輸出:

將動作監聽器新增到 jbutton 2

使用繼承將 ActionListener 新增到 JButton

在這個程式中,我們使用繼承的概念新增了 ActionListener

我們建立一個類 JavaExample,然後擴充套件類 JFrame 並實現 ActionListener 介面。我們必須重寫作為 ActionListener 介面一部分的 actionPerformed() 方法。

我們在 main() 方法之外宣告 JFrame 元件變數,因為我們需要在函式外使用它。我們建立 JavaExample 類的建構函式並在其中設定所有元件。

要將 ActionListener 新增到 JButton 元件,我們呼叫 addActionListener() 方法並傳遞 this,它指向當前類的上下文,因為當前類 JavaExample 實現 ActionListener 它是傳遞函式的有效上下文。

actionPerformed() 函式中,我們編寫了按下按鈕時要執行的操作。在 main() 方法中,我們建立 JFrame 的例項並設定其佈局和可見性。

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

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

輸出:

將動作監聽器新增到 jbutton 3

Author: 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