안녕하세요
이번 시간에는 자바 프레임(Frame)에서 마우스 이벤트를 활용하는 간단한 예제를 올릴까 합니다.
***********************************************
이벤트 소스 : Frame
이벤트 : MouseEvent
이벤트 핸들러 : MouseListener를 상속받는다.
************************************************
보시다시피 창 화면에 마우스 왼쪽 버튼을 누르면 타이틀에 클릭한 x,y 좌표의 위치가 출력되고 '나를 클릭해보세요' 멘트가 이동합니다.
또한 오른쪽 마우스 버튼을 누르면 Open(O), Save(S) 라는 팝업 메뉴가 뜹니다.
자 그럼 소스코드를 볼까요~
package testtest;
import java.awt.*;
import java.awt.event.*;
//MouseListener는 인터페이스고 추상메소드가 5개이기 때문에, 5개 메소드를 다 구현해야한다.
public class test extends Frame implements MouseListener {
String str="나를 클릭해보세요";
int x=50,y=50;
PopupMenu pm;
MenuItem mi1, mi2;
public test(){
super("::MouseE::");
//팝업메뉴 생성 및 부착
pm=new PopupMenu();
add(pm); //add해도 나타나지 않는다. show()해야 나타남
mi1=new MenuItem("Open(O)"); mi2=new MenuItem("Save(S)");
pm.add(mi1); pm.addSeparator(); pm.add(mi2);
//마우스 이벤트 리스너 부착
this.addMouseListener(this);
}
// MouseListener 5개 추상메소드 구현
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseClicked(MouseEvent e){
//마우스 오른 버튼을 누를때만 팝업메뉴가 뜨도록 처리
if(e.getButton()==MouseEvent.BUTTON3){
pm.show(this, e.getX(), e.getY());
}
}
//Press->Release->Click //반응속도가 제일 빠른 Press
public void mousePressed(MouseEvent e){
x=e.getX(); y=e.getY();
setTitle("x :"+ x +" y : " + y);
repaint();
//paint()메소드는 우리가 호출할 수 없고, JVM이 호출해준다.
//우리는 repaint()를 호출함으로써 JVM이 paint()를 호출하도록 유도할 수 있다.
}
public void mouseReleased(MouseEvent e){}
@Override
public void paint(Graphics g){
g.setColor(Color.BLUE);
g.drawString(str, x, y);
}
public static void main(String[] args) {
test my = new test();
my.setSize(400,400);
my.setVisible(true);
}
}
댓글 없음:
댓글 쓰기