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

Java Swing에서 JButton 텍스트를 동적으로 변경하는 방법

JButtonAbstractButton의 하위 클래스로, Java Swing 애플리케이션에서 플랫폼에 독립적인 버튼을 추가할 때 사용됩니다. 사용자가 버튼을 클릭하면 ActionListener 인터페이스가 호출되며, 이 외에도 MouseListenerKeyListener 인터페이스의 이벤트도 함께 처리할 수 있습니다.

JButton 텍스트 변경 원리

기본적으로 JButton은 텍스트와 함께 생성할 수 있으며, 실행 중에도 버튼의 텍스트를 자유롭게 변경할 수 있습니다. 가장 일반적인 방식은 텍스트 필드에 새로운 문자열을 입력한 후 버튼을 클릭하는 것입니다. 이때 ActionListener 인터페이스의 actionPerformed() 메서드가 호출되고, JButton 클래스의 setText(textField.getText()) 메서드를 통해 버튼의 텍스트가 입력된 값으로 갱신됩니다.

예제 코드

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

public class JButtonTextChangeTest extends JFrame {
    private JTextField textField;
    private JButton button;

    public JButtonTextChangeTest() {
        setTitle("JButtonTextChange Test");
        setLayout(new FlowLayout());
        textField = new JTextField(20);
        button = new JButton("Initial Button");

        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                if (!textField.getText().equals(""))
                    button.setText(textField.getText());
            }
        });

        add(textField);
        add(button);
        setSize(400, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String[] args) {
        new JButtonTextChangeTest();
    }
}

코드 설명

위 예제는 다음과 같은 구조로 동작합니다.

  • textField: 사용자가 새 버튼 텍스트를 입력할 수 있는 텍스트 필드입니다.
  • button: 초기 텍스트가 "Initial Button"으로 설정된 JButton입니다.
  • ActionListener: 버튼이 클릭되면 actionPerformed() 메서드가 실행되며, 텍스트 필드가 비어 있지 않은 경우에만 setText() 메서드로 버튼 텍스트를 업데이트합니다.

실행 결과

프로그램을 실행하면 초기 상태에서 "Initial Button"이라는 텍스트가 표시됩니다.

Java Swing에서 JButton 텍스트를 동적으로 변경하는 방법

텍스트 필드에 새로운 문자열을 입력하고 버튼을 클릭하면, 버튼의 텍스트가 즉시 변경된 것을 확인할 수 있습니다.

Java Swing에서 JButton 텍스트를 동적으로 변경하는 방법

마무리

이처럼 JButton의 setText() 메서드와 ActionListener를 활용하면 사용자 입력에 따라 버튼 텍스트를 손쉽게 동적으로 변경할 수 있습니다. 이 기법은 상태 표시 버튼, 토글 버튼 등 다양한 UI 시나리오에서 유용하게 활용될 수 있습니다.