package blogpractice;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
// 마우스 리스너 :
public class MouseEventListener1 extends JFrame implements MouseListener{
JLabel jLabel;
final int LABEL_WIDTH = 100; // 라벨의 가로 크기
final int LABEL_HEIGHT = 100; // 라벨의 세로 크기
int xPosition = 100;
int yPosition = 100;
public MouseEventListener1() {
initData();
setInitLayout();
addEventListener();
}
private void initData() {
setTitle("마우스 이벤트 사용법");
setSize(500, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jLabel = new JLabel("나 잡아봐라");
}
private void setInitLayout() {
setVisible(true);
setLayout(null); // 배치를 좌표값을 넣어 원하는 곳에 배치하기위해 null값을 넣어준다.
// jLabel의 좌표, 사이즈를 setBounds통해 (x좌표, y좌표, 가로크기, 세로크기) 설정을 해준다.
jLabel.setBounds(xPosition, yPosition, LABEL_WIDTH, LABEL_HEIGHT);
add(jLabel); // 위치와 크기가 설정이 됬으면 add해서 배치를 해주면된다.
System.out.println("bouns : " + jLabel.getBounds()); // 배치가 되었을시 getBounds!!! 즉 좌표값과 크기를 표시해준다. 확인용 코드!!!
}
private void addEventListener() {
this.addMouseListener(this); // 자기 자신의 주소값에 MouseListener을 등록을 해준다.
// 앞의 this는 현재 컴포넌트가 없는 상태이다 그러기때문에 자기 자신의 주소에 마우스 리스너를 등록을 해주고
// 마우스의 동작이 일어날때 이벤트를 발생시켜준다.
}
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("마우스가 클릭 되었습니다.");
// Rectangle : 사각형
Rectangle r = jLabel.getBounds();
// 사각형 r 변수에 라벨의 좌표값, 위치를(좌표 100, 100 // 크기 100, 100) 담아준다.
e.getX();
e.getY();
System.out.println("x : " + e.getX());
System.out.println("y : " + e.getY());
// setLocation : 위치 설정
// 마우스가 클릭 되었을시 클릭된 좌표값에서 라벨의 크기만큼 좌표값을 빼준다.
jLabel.setLocation(e.getX() - r.width, e.getY() - r.height);
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
new MouseEventListener1();
}
}
'개발일지 > 자바' 카테고리의 다른 글
마우스 리스너 (어댑터 활용) (0) | 2022.09.17 |
---|---|
마우스 리스너 (MouseListener) - 2 (익명, 구현 클래스) (0) | 2022.09.17 |
Button 리스너 등록 색 변경하기 - 2 (익명, 구현클래스) (0) | 2022.09.17 |
Button 리스너 등록 색 변경하기 - 1 (0) | 2022.09.17 |
각각의 버튼의 콜백메소드 (0) | 2022.09.17 |
댓글