알버트의 개발하는 블로그

자바 제24강 : 자바 윈도우창과 버튼 만들고 ActionListener 클래스 구현해보기 본문

프로그래밍 언어/Java

자바 제24강 : 자바 윈도우창과 버튼 만들고 ActionListener 클래스 구현해보기

알버트 2021. 9. 10. 10:33

 

이번 시간에는 Frame클래스로 윈도우창을 만들고 Button을 넣은 뒤에 ActionListener 클래스를 구현해보는 예제를 해보도록 하겠습니다. 일단 자바에서 제공하는 Component와 Container의 개념을 잘 알아야 합니다. Component는 Frame, Panel, Button등을 말하고 Container은 이런 Component들을 가질 수 있는 것을 말합니다.

 

예를 들어, Frame에 Panel, Button등을 add하면 Frame클래스 안에 있는 Container에 추가됩니다. 그럼, Frame에서 발생하는 Event들을 Container에 포함되어 있는 Component들에 일괄적으로 적용시킬 수 있습니다. 이제 간단한 예제를 통해서 윈도우창과 버튼을 만들고 ActionListener을 구현해보겠습니다.

 

 


ActionListener 클래스 예제

package kr.koreait.listenerTest;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

//ActionListener 인터페이스를 구현받고 actionPerformed()를 Override해서 실행할 기능을 구현
public class ActionListenerTest extends JFrame implements ActionListener {

	JButton button1 = new JButton("눌러봐~~~~~");	//1~3번째 버튼 생성
	JButton button2 = new JButton("눌러보라니까~~~~~");
	JButton button3 = new JButton("왜안눌러봐~~~~~");
	
	public ActionListenerTest() {
		setTitle("ActionListenerTest");	//윈도우창 제목 설정
		setBounds(800, 100, 300, 400);	//윈도우창 위치와 크기 설정
		
		GridLayout grid = new GridLayout(3, 1);//3행 1열의 GridLayout객체 생성
		setLayout(grid);	//객체로 윈도우창을 3행1열로 분할 
		
		add(button1);	
		add(button2);	//윈도우창에 순서대로 버튼 추가
		add(button3);
		
		button1.addActionListener(new ActionListener() {
			@Override
//버튼1을 누를때 메세지 보여줌	public void actionPerformed(ActionEvent e) { 
			JOptionPane.showMessageDialog(button1, "눌렀냐~~~~~", "에러",
            JOptionPane.ERROR_MESSAGE);
			}
		});
		button2.addActionListener(this);
		button3.addActionListener(this);
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		
		ActionListenerTest window = new ActionListenerTest();
		
	}

	@Override
	public void actionPerformed(ActionEvent e) {

	switch(e.getActionCommand()) {  //switch문으로 들어온 커맨드에 따라 다르게 처리
	case "눌러보라니까~~~~~":  //버튼2를 클릭하면 나오는 메세지창
	int result = JOptionPane.showConfirmDialog(button2, "프로그램을 종료하겠습니까?", 
	"프로그램 종료", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
		if(result == 0) {
			System.exit(0);	}
				break;
			case "왜안눌러봐~~~~~":  //왜안눌러봐 버튼을 클릭하면 브레이크
				break;
		}
	}
}

 

코딩은 이와 같이 해주었습니다. ActionListener 인터페이스를 구현받고 기본생성자로 컴포넌트(버튼)들을 추가해주었습니다. 그리고 나서 actionPerformed 메소드를 오버라이드해서 버튼을 클릭하면 나올 메세지를 코딩해주었습니다.

 

실행결과는 이와 같습니다. 각 버튼을 클릭할 때 나오는 이미지가 버튼 위에 나오게 됩니다.

컴파일했을 때 나오는 처음 화면입니다.

 

첫번째 버튼을 클릭하면 에러메세지가 나옵니다.

 

 

 

 

두번째 버튼을 클릭하면 프로그램 종료 창이 뜨게 되는 것을 알 수 있습니다. 세번째 버튼에 대해서는 따로 작업을 지정해주지 않았기 때문에 세번째 버튼을 클릭하면 아무 창이 뜨지 않는 것을 알 수 있습니다.

 

이처럼, ActionListener 클래스를 이용하면 윈도우창에서 우리가 하는 액션에 따라서 여러가지 창을 띄우거나 작업을 할 수 있습니다. 읽어주셔서 감사합니다.