JAVA
java 내부클래스를 이용하여 ActionListner 이벤트 만들기
자바비터
2022. 4. 10. 23:51
▶ 내부클래스
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 이벤트 리스너 예제"로 시작하여 버튼 클릭시 버튼이름과 같이 바뀐다.
이렇게 내부 클래스를 이용하면 코드를 좀 더 간결하게 작성할 수 있다.