알버트의 개발하는 블로그
자바 제24강 : 자바 윈도우창과 버튼 만들고 ActionListener 클래스 구현해보기 본문
이번 시간에는 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 클래스를 이용하면 윈도우창에서 우리가 하는 액션에 따라서 여러가지 창을 띄우거나 작업을 할 수 있습니다. 읽어주셔서 감사합니다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
자바 제26강 : 자바 Panel 클래스 상속받아서 paint() 메소드로 그래픽 구현하기 (0) | 2021.09.13 |
---|---|
자바 제25강 : 자바 GridLayout클래스 이용하여 바둑판 윈도우창 생성하기 (0) | 2021.09.13 |
자바 제23강 : 자바 Dimension 클래스로 윈도우창 조절하기 (디멘션) (0) | 2021.09.10 |
자바 제22강 : 자바 JFrame 클래스로 기본 윈도우창 만들기 (제이프레임) (0) | 2021.09.10 |
자바 제21강 : 자바 Frame 클래스로 기본 윈도우창 만들기 (프레임) (0) | 2021.09.10 |