본문 바로가기
JAVA

java 내부클래스를 이용하여 ActionListner 이벤트 만들기

by 자바비터 2022. 4. 10.

▶ 내부클래스

ActionListner를 내부클래스로 만들어 간단하게 버튼 이벤트를 만들어 보려고 한다.

"Action"이라고 설정되어있는 버튼이름을 버튼 클릭시 "액션"이라고 바꿔주고

"액션"일 때 버튼을 클릭하면 다시 "Action"으로 바꾸어주는 액션리스너를 만들어보자.

 

 

▶ ActionLister 내부클래스 예제

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

public class Ex03 extends JFrame {
	public Ex03() {
		setTitle("Action 이벤트 리스너 예제"); //프레임 제목
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //[X] 프레임 종료시 프로그램도 종료 
		Container c = getContentPane(); //컨테이너 생성
		c.setLayout(new FlowLayout()); //프레임 위치 설정
		JButton btn = new JButton("Action"); //버튼 생성 이름은 Action
		btn.addActionListener(new MyActionListener()); //이벤트 생성
		c.add(btn); //컨테이너에 버튼 추가
		
		setSize(350, 150); //프레임 사이즈
		setVisible(true); //프레임 전시여부
	}
	//이게 바로 내부 클래스다
	//코드를 간결하게 유지할 수 있다.
	class MyActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			JButton b = (JButton)e.getSource();
			if(b.getText().equals("Action"))
				b.setText("액션");
			else
				b.setText("Action");
			//InnerClassListener의 멤버나 JFrame의 멤버를 호출할 수 있음
			Ex03.this.setTitle(b.getText());
			//프레임 타이틀에 버튼 문자열을 출력한다
		}
	}
	//메인 클래스는 메인 클래스의 생성자만 호출	
	public static void main(String[] args) {
		new Ex03();
	}
}

 

타이틀도 "Action 이벤트 리스너 예제"로 시작하여 버튼 클릭시 버튼이름과 같이 바뀐다.

이렇게 내부 클래스를 이용하면 코드를 좀 더 간결하게 작성할 수 있다.

댓글