Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java FocusListener 인터페이스 완벽 가이드: 개념, 문법, 예제 코드까지

FocusListener 인터페이스란?

FocusListener는 Java AWT/Swing에서 컴포넌트의 포커스 변화를 감지하기 위해 사용되는 이벤트 리스너 인터페이스입니다. GUI 프로그래밍에서 사용자 입력의 흐름을 제어하거나 UI 상태를 갱신할 때 매우 유용하게 활용됩니다.

핵심 개념 정리

  • 포커스 이벤트는 컴포넌트가 키보드 포커스를 얻거나 잃을 때마다 자동으로 발생합니다.
  • 발생한 포커스 이벤트를 표현하는 객체는 FocusEvent 클래스를 통해 생성됩니다.
  • FocusEvent 클래스에 대응하는 리스너 인터페이스가 바로 FocusListener이며, 포커스 이벤트를 처리하려는 모든 리스너는 이 인터페이스를 구현(implements)해야 합니다.
  • FocusListener 인터페이스는 두 개의 메서드를 포함합니다.
    • focusGained(): 리스너가 등록된 컴포넌트가 포커스를 얻은 직후 AWT에 의해 호출됩니다.
    • focusLost(): 리스너가 등록된 컴포넌트가 포커스를 잃은 직후 AWT에 의해 호출됩니다.

문법(Syntax)

FocusListener 인터페이스의 기본 선언 구조는 다음과 같습니다.

public interface FocusListener extends EventListener {
    public void focusGained(FocusEvent fe);
    public void focusLost(FocusEvent fe);
}

예제 코드(Example)

아래 예제는 JTextField에 FocusListener를 등록하여, 텍스트 필드가 포커스를 얻거나 잃을 때 콘솔에 메시지를 출력하는 프로그램입니다.

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

public class FocusListenerTest extends JPanel implements FocusListener {
    private JTextField textField;

    public FocusListenerTest() {
        setLayout(new BorderLayout());
        textField = new JTextField();
        textField.addFocusListener(this);
        add(textField, BorderLayout.NORTH);
    }

    public void focusGained(FocusEvent fe) {
        System.out.println("Text field gained focus");
    }

    public void focusLost(FocusEvent fe) {
        System.out.println("Text field lost focus");
    }

    public static void main(String args[]) {
        JFrame frame = new JFrame();
        frame.add(new FocusListenerTest());
        frame.setTitle("FocusListener Test");
        frame.setSize(375, 250);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

실행 결과(Output)

프로그램을 실행한 후 텍스트 필드를 마우스로 클릭하면 포커스가 해당 필드로 이동하면서 콘솔에 "Text field gained focus"가 출력됩니다. 반대로 Tab 키를 누르거나 창의 다른 영역을 클릭해 포커스가 벗어나면 "Text field lost focus"가 출력됩니다.

Java FocusListener 인터페이스 완벽 가이드: 개념, 문법, 예제 코드까지

Java FocusListener 인터페이스 완벽 가이드: 개념, 문법, 예제 코드까지

FocusListener의 실무 활용 사례

  • 입력값 유효성 검사: 텍스트 필드에서 포커스가 벗어나는 시점(focusLost)에 입력 형식을 검증할 수 있습니다.
  • UI 피드백 제공: 포커스를 얻은 컴포넌트의 배경색을 변경하거나 안내 문구를 표시해 사용자 경험을 향상시킬 수 있습니다.
  • 자동 저장 및 데이터 동기화: 편집 중인 폼에서 포커스가 이동할 때 변경 사항을 임시 저장하는 로직을 구현할 수 있습니다.

이처럼 FocusListener는 키보드 포커스의 흐름을 세밀하게 제어해야 하는 Java GUI 애플리케이션에서 필수적인 인터페이스입니다.