S.S.G

MouseListener 사용 해보기 본문

코딩/JAVA

MouseListener 사용 해보기

자유로운개발 2016. 7. 4. 14:51
반응형

* 마우스로 문자열 이동시키기

  - 프레임상의 임의의 위치에 마우스 버튼을 누르면 마우스 포인트가 있는 위치에 "Hello" 문자열을 출력

 


import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.*;

public class Test extends JFrame {
 JPanel contentPane = new JPanel();
 JLabel la;

 Test() {
  setTitle("마우스 이벤트 예제");
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  setContentPane(contentPane);
  contentPane.setLayout(null);
  contentPane.addMouseListener(new MyMouseListener());

 

  la = new JLabel("hello");
  la.setSize(50, 20);
  la.setLocation(30, 30);
  contentPane.add(la);

 

  setSize(400, 400);
  setVisible(true);
 }

 class MyMouseListener implements MouseListener {
  public void mousePressed(MouseEvent e) {
   int x = e.getX();
   int y = e.getY();
   la.setLocation(x, y);
  }

 // MouseListener 인터페이스의 나머지 4개 메소드도 모두 구현하여야 실행이 됨.

  @Override
  public void mouseClicked(MouseEvent e) { }

  @Override
  public void mouseReleased(MouseEvent e) { }

  @Override
  public void mouseEntered(MouseEvent e) { }

  @Override
  public void mouseExited(MouseEvent e) { }

 

 }

 public static void main(String arg[]) {
  new Test();

 }
}

 

 

* MouseAdapter 클래스 사용

 - 자바의 JDK는 이벤트 리스너 인터페이스를 미리 구현해놓은 클래스를 제공함. ( 사용하고자 하는 인터페이스만 사용하고 나머지 인터페이스는 생략가능)

 

public class Test extends JFrame {
 JPanel contentPane = new JPanel();
 JLabel la;
 
 Test() {
  setTitle("마우스 이벤트 예제");
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
  setContentPane(contentPane);
  contentPane.setLayout(null);
  contentPane.addMouseListener(new MyMouseAdapter());  --> 변경된 부분
  
  la = new JLabel("hello");
  la.setSize(50,20);
  la.setLocation(30,30);
  contentPane.add(la);
  
  setSize(400, 400);
  setVisible(true);
 }
 
 class MyMouseAdapter extends MouseAdapter{  -->변경된 부분
  public void mousePressed(MouseEvent e){
   int x = e.getX();
   int y = e.getY();
   la.setLocation(x,y);
  }
 
 }
 public static void main(String arg[]) {
  new Test();

 }
}

 

실행 결과

 


 

반응형