Haekt‘s log

[JAVA] GUI 버튼에 이벤트 넣기 본문

언어/JAVA

[JAVA] GUI 버튼에 이벤트 넣기

Haekt 2022. 11. 30. 20:51

 

아래와 같은 UI 창에서 버튼을 눌렀을 때 특정 값이 출력되는 이벤트를 코딩 해보자.

UI는 아래의 사진을 보고 한번 직접 만들어보자.

 

 

hello 를 눌렀을 때

 

not hello 를 눌렀을 때

 

 

* GUI만들기 참고 

https://haekt-log.tistory.com/50

 

[JAVA] 자바로 GUI (창)띄우기

자바로 위와 같은 UI 창을 띄우는 방법을 알아보자. - 종류 (버튼, 텍스트, 라디오 버튼 등..) 더보기 JLabel Static 문자를 넣을때 사용하는 객체이다. JLabel 변수 = new JLabel("hit") // static 문자를 괄호안

haekt-log.tistory.com

 


- 이벤트 처리 코딩 과정

  1. java.awt.event.* 추가
  2. 클래스에 ActionListener 상속받기.
  3. 버튼에 ActionListener 추가
  4. ActionPerformed 코딩

 

1. java.awt.event.* 추가

Event 관련 클래스는 java.awt.event.* 에 위치해 있다. 

// awt.* 해도 안먹힘. 이벤트는 별개로 해줘야 한다.
import java.awt.event.*;

 

2. 클래스에 ActionListener 상속받기

클래스에 ActionListener 를 상속받아야 event를 감지하고 동작할 수 있다.

// ActionListener 를 implements 해준다.
public class event_test implements ActionListener
{

}

 

위와 같이 implements ActionListener 를 추가해주면, 클래스가 빨간색으로 줄쳐지게 된다. 

 

ActionListener 클래스의 멤버함수를 추가하지 않았기 때문이다.

extends 와 다르게, implements 는 자식 클래스에서 부모객체의 멤버를 Override(재정의) 해줘야 한다. 

 

클래스에 마우스를 가져다 대고, Add unimplemented 를 눌러 Override 해준다.

 

그럼 이런식으로 클래스 내에 actionPerformed() 라는 함수가 재정의 된다.

 

 

3. 버튼에 ActionListener 추가하기

버튼을 눌렀을 때 어떤 ActionListener 를 실행할지 추가해줘야 한다.

괄호안에 this를 써서 방금만든 함수를 실행시킬수도, 다른 ActionListener 클래스의 멤버함수를 실행시킬 수도 있다.

//this 인 이유는 해당 클래스 안에 직접 Override 를 했기 때문.
버튼변수.addActionListener(this);

//클래스 안에 직접 Override 하지 않은 클래스를 사용할 경우.
버튼변수.addActionListener(new B());

// 예시
b1.addActionListener(this);
b2.addActionListener(new B());

 

- 다른 클래스를 생성하여 실행하는 방법 2가지

더보기

먼저 1번째 방법이다.

ActionListener 클래스를 상속받는 다른 클래스를 이용하는 방법이다.

실행시킬 클래스의 이름을 함수의 괄호안에 적어준다.

//버튼변수.addActionListener(new 클래스이름());
b2.addActionListener(new B());

 

그 후 클래스 안에 새로 클래스를 추가해준다.

// public class 클래스이름 JFrame implements ActionListener{
// ...

//클래스 안에 작성
// public class 클래스이름 implements ActionListener{

public class B implements ActionListener{

	@Override
	public void actionPerformed(ActionEvent e) {
        // 버튼을 누르면 여기에 적힌 코드가 실행됨
        
	}
		
}


// ...
// } //event

 

2번째 방법이다.

버튼에 ActionListener 를 추가하는 부분에 직접 ActionListener 클래스를 추가해주는 방법이다.

//버튼변수.addActionListener(new ActionListener(){   });
b2.addActionListener(new ActionListener() 
{
	public void actionPerformed(ActionEvent e)
	{			
    	//버튼을 누르면 여기에 적힌 코드가 실행됨
	}    
});

 

 

 

4. ActionPerformed 코딩하기

앞서 2번에서 추가했던 actionPerformed() 함수 안에 작동할 코드를 작성하면 끝이난다.

이제 버튼을 누르면 actionPerformed() 함수에 작성한 코드가 실행된다.

 

 

Comments