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