MouseAdapter 사용법
* 1. 클래스 내에서만 사용하기때문 private를 사용하여 내부클래스를 만들어준다.
* 2. MouseAdapter라는 추상클래스를 상속받아준다 (추상클래스, 인터페이스는 객체 생성(new) 를 할수가없다)
* 3. 내부클래스에 추상클래스를 상속을 받아준다(내부클래스는 new 가능)
이제는 new해서 MouseAdapter(추상클래스 new안됨)에 접근이 가능하다
* 4. MouseAdapter는 MouseListener인터페이스를 구현하고있다. 그러기때문에 MouseListener까지 접근가능
* 5. 일반 내부클래스인 MyMouseListener를 new를 해줘서 오버라이드를 해준다.
* 6. 그럼 MouseListener인터페이스에서 원하는 기능만 오버라이드를 해줄수가 있다.
package blogpractice;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class MouseAd extends JFrame{
JLabel label;
final int LABEL_WIDTH = 100;
final int LABEL_HEIGHT = 100;
int xPoint = 100;
int yPoint = 100;
public MouseAd() {
initData();
setInitLayout();
addEventListener();
}
private void initData() {
setTitle("마우스리스너 어댑터 사용법");
setSize(500, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
label = new JLabel("라벨");
}
private void setInitLayout() {
setVisible(true);
setResizable(false); // 프레임 사이즈 수정 불가
setLayout(null);
label.setBounds(xPoint, yPoint, LABEL_WIDTH, LABEL_HEIGHT);
add(label);
}
//
private void addEventListener() {
this.addMouseListener(new MyMouseListener());
}
// 마우스 리스너를 사용하게되면 추상메소드가 일반 메소드로 재정의를 해서 사용하게된다. 그치만 모든 추상메소드를 강제로 사용을 해야한다.
// 불필요한 코드를 써야 한다는 의미인것이다.
// 원하는 기능만 사용하려면 MouseAdapter를 사용하면 원하는 기능 골라서 오버라이드을 해줄수가 있다.
// 방법
/*
* 1. 클래스 내에서만 사용하기때문 private를 사용하여 내부클래스를 만들어준다.
* 2. MouseAdapter라는 추상클래스를 상속받아준다 (추상클래스, 인터페이스는 객체 생성(new) 를 할수가없다)
* 3. 내부클래스에 추상클래스를 상속을 받아준다. 이제는 new해서 MouseAdapter에 접근이 가능하다
* 4. MouseAdapter는 MouseListener인터페이스를 구현하고있다. 그러기때문에 MouseListener까지 접근가능
* 5. 일반 내부클래스인 MyMouseListener를 new를 해줘서 오버라이드를 해준다.
* 6. 그럼 MouseListener인터페이스에서 원하는 기능만 오버라이드를 해줄수가 있다.
*/
private class MyMouseListener extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent e) {
int x = e.getX();
int y = e.getY();
label.setLocation(x , y - (label.getBounds().height));
System.out.println("x좌표 : " + x);
System.out.println("y좌표 : " + y);
}
@Override
public void mouseEntered(MouseEvent e) {
System.out.println("마우스가 프레임 안으로 이동");
}
}
public static void main(String[] args) {
new MouseAd();
}
}
'개발일지 > 자바' 카테고리의 다른 글
이미지 움직이기, 이동범위 제한(KeyAdapter, Jpanel 활용) - 2 (0) | 2022.09.17 |
---|---|
이미지 움직이기, 이동범위 제한(keyListener, Jpanel 활용) - 1 (0) | 2022.09.17 |
마우스 리스너 (MouseListener) - 2 (익명, 구현 클래스) (0) | 2022.09.17 |
마우스 리스너 (MouseListener) - 1 (0) | 2022.09.17 |
Button 리스너 등록 색 변경하기 - 2 (익명, 구현클래스) (0) | 2022.09.17 |
댓글