Purple Bobblehead Bunny

Backend/JAVA

[JAVA] Event Listener Button,Mouse

준영어린이 2022. 3. 8. 17:36

 

버튼 이벤트

이벤트리스너 를 추가하기 전에는 Button을 눌러도 아무 변화가 없지만, 

리스너를 추가하고 다시 실행하면 글자가 바뀐다.

 

class Listener1 implements ActionListener {
           public void actionPerformed(ActionEvent e) {
           JButton button = (JButton) e.getSource();
           button.setText("버튼을 클릭하였습니다.");
       }
}

 

이벤트 리스너 클래스 선언할 때, ActionListener 인터페이스를 구현하고, 내부의 추상메서드

actionPerformed(ActionEvent e) 를 작성했다.

이벤트가 발생하면, ActitonEvent e를 통해 발생한 이벤트 객체를 받아오고

 

JButton button = (JButton) e.getSource();

getSource 메소드를 통해 ActionEvent의 정보를 읽어와 저장을 한다.

 

button.setText("버튼을 클릭하였습니다.");

setText() 메소드를 통해 해당 버튼의 글자를 바꾸는 동작을 하게 된다.

 

작성한 이벤트 리스너를 사용하기 위해서는

button.addActionListener(new Listener1());

컴포넌트가 선언된 클래스 내부에서 컴포넌트에 리스너를 붙이면 된다.

 

마우스 이벤트

 

이벤트 종류 리스너 인터페이스 추상 메서드 발생 상황
Mouse MouseMotionListener void mouseDragged(MouseEvent e) 마우스가 드래그 될 때
void mouseMovedMouseEvent e) 마우스가 움직일 때

마우스에 이벤트가 발생하면 얻을 수 있는 정보는 마우스 현재 좌표, 마우스의 버튼, 마우스의 클릭한 횟수 등의

정보가 있다.

 

메소드 메소드의 활용
int getX() 현재 마우스 포인터의 x좌표
int getY() 현재 마우스 포인터의 y좌표
short getButton() 현재 클릭한 버튼(왼쪽, 오른쪽)
int getClickCount() 마우스를 클릭한 횟수

 

사용자가 마우스를 움직이거나 클릭할 때마다 그 이벤트로부터 정보를 얻어 출력하는 프로그램이다.

 

class MouseListener1 implements OuseListener, MouseMotionListener

마우스 이벤트 처리를 위한 클래스 작성을 위해서, MouseListener, MouseMotion Listener를 구현했다.

인터페이스에 있는 추상 메소드를 모두 구현해야 한다.

 

public void mousePressed(MouseEvent e)
public void mouseReleased(MouseEvent e)
public void mouseClicked(MouseEvent e)
public void mouseEntered(MouseEvent e)
public void mouseExited(MouseEvent e)
public void mouseDragged(MouseEvent e)
public void mouseMoved(MouseEvent e)

특정 이벤트에 따라 해당하는 메서드에 내용을 만든다. ex) 마우스의 클릭 횟수를 보여주고 싶을 때는

public void mouseClicked(MouseEvent e) { // 클릭 될 때
         label.setText("마우스 클륵 횟수 : " + e.getClickCount());
           }

getClickCount() 메소드를 통해 클릭한 횟수를 알아내고 setText를 통해 생성한 JLabel의 텍스트를 변경해주면 

횟수를 화면에 표시할 수 있다.

 

 

'Backend > JAVA' 카테고리의 다른 글

[JAVA] Stack, Queue, Deque  (0) 2022.03.09
[JAVA] 메뉴 구성하기  (0) 2022.03.08
[JAVA] Swing 이미지  (0) 2022.03.08
[JAVA] Vector, 동적 배열 자료구조  (0) 2022.03.08
[JAVA] LinkedList  (0) 2022.03.07