이미지 창에서 지정된 영역을 클릭하면 해당 이미지가 출력되도록 하는 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 |