Java에서 JButton에 ActionListener 추가

Rupam Yadav 2024년2월15일
  1. 익명 클래스를 사용하여 JButtonActionListener 추가
  2. 익명 클래스 및 Lambda를 사용하여 JButtonActionListener 추가
  3. 상속을 사용하여 JButtonActionListener 추가
Java에서 JButton에 ActionListener 추가

오늘 우리는 java.awt.eventActionListener 인터페이스와 Java Swing 패키지의 JFrame 클래스의 구성요소인 JButton에 이를 추가하는 방법에 대해 논의할 것입니다.

익명 클래스를 사용하여 JButtonActionListener 추가

첫 번째 예에서는 main() 메서드를 사용하여 JavaExample 클래스를 만들고 해당 메서드에서 JFrame 개체를 만듭니다. JFrame 창에서 메시지를 표시하는 JLabel, 입력을 받는 JTextField, ActionListener를 추가할 JButton의 세 가지 구성 요소를 만듭니다.

리스너를 추가하기 위해 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);
  }
}

출력:

jbutton 1에 actionlistener 추가

익명 클래스 및 Lambda를 사용하여 JButtonActionListener 추가

Java 8에서는 이 예제에서 사용할 Lambda 표현식이 추가되었습니다. 모든 것은 이전 예제와 동일하지만 프로그램에서 buttonPressed() 메서드를 만들고 해당 함수에서 텍스트 필드에 작성된 메시지를 JLabel에 인쇄합니다.

JButtonActionListener를 추가하기 위해 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");
    }
  }
}

출력:

jbutton 2에 actionlistener 추가

상속을 사용하여 JButtonActionListener 추가

이 프로그램에서는 상속 개념을 사용하여 ActionListener를 추가합니다.

JavaExample 클래스를 생성한 다음 JFrame 클래스를 확장하고 ActionListener 인터페이스를 구현합니다. ActionListener 인터페이스의 일부인 actionPerformed() 메서드를 재정의해야 합니다.

함수 외부에서 사용해야 하기 때문에 main() 메소드 외부에서 JFrame 구성 요소 변수를 선언합니다. JavaExample 클래스의 생성자를 만들고 그 안에 모든 구성 요소를 설정합니다.

JButton 구성 요소에 ActionListener를 추가하기 위해 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");
    }
  }
}

출력:

jbutton 3에 actionlistener 추가

작가: 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