본문 바로가기
2023/PROJECT

[JAVA] 지정된 좌표 클릭 이벤트

by Or0i쿠 2023. 6. 19.

이미지 창에서 지정된 영역을 클릭하면 해당 이미지가 출력되도록 하는 Java 코드
MouseListener를 사용하여 마우스 클릭 이벤트를 처리합니다. 아래의 코드 예제를 확인해주세요.
JFrame을 상속받아 이미지 출력 및 클릭 이벤트 처리를 위한 ImageDisplay 클래스를 생성합니다.

java
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.Rectangle;

public class ImageDisplay extends JFrame {
private Image image1;
private Image image2;
private Image currentImage;
private Rectangle clickableArea1;
private Rectangle clickableArea2;

public ImageDisplay(Image image1, Image image2, Rectangle clickableArea1, Rectangle clickableArea2) {
this.image1 = image1;
this.image2 = image2;
this.clickableArea1 = clickableArea1;
this.clickableArea2 = clickableArea2;
this.currentImage = image1;

initUI();
}

private void initUI() {
JPanel panel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(currentImage, 0, 0, null);
}
};
setContentPane(panel);

addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (clickableArea1.contains(e.getX(), e.getY())) {
currentImage = image1;
repaint();
} else if (clickableArea2.contains(e.getX(), e.getY())) {
currentImage = image2;
repaint();
}
}
});

setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
}


메인 클래스에서 아래와 같이 ImageDisplay 객체를 생성하고 이미지를 출력합니다.

java
import javax.imageio.ImageIO;
import java.awt.Rectangle;
import java.awt.Image;
import java.io.File;
import java.io.IOException;

public class MainClass {
public static void main(String[] args) {
final Rectangle clickableArea1 = new Rectangle(1, 1, 50, 50);
final Rectangle clickableArea2 = new Rectangle(100, 100, 30, 30);

try {
Image image1 = ImageIO.read(new File("path/to/image1.png"));
Image image2 = ImageIO.read(new File("path/to/image2.png"));

ImageDisplay display = new ImageDisplay(image1, image2, clickableArea1, clickableArea2);
display.setVisible(true);
} catch (IOException e) {
e.printStackTrace();
}
}
}


이 코드를 사용하면, x1,y1에서 50x50 크기의 영역을 클릭하면 1번 이미지가 출력되고, x100,y100에서 30x30 크기의 영역을 클릭하면 2번 이미지가 출력됩니다. 이미지 경로를 지정할 때 "path/to/image1.png"와 "path/to/image2.png" 부분을 실제 이미지 파일 경로로 변경해 주세요.

'2023 > PROJECT' 카테고리의 다른 글

[JAVA] 검색창  (0) 2023.06.21
[JAVA] 캘린더 UI  (0) 2023.06.20
[JAVA] 오라클 일정 추가 캘린더  (0) 2023.06.20
[JAVA] 둥근 검색창  (0) 2023.06.19
[JAVA]이미지창에 api캘린더 추가  (0) 2023.06.19