캘린더 오픈 API를 이미지 창에 추가하려면 먼저 캘린더를 가져들인 다음 이미지 창에 출력하도록 코드를 수정해야 합니다. JavaFX를 사용하여 캘린더를 가져오고 간단하게 이미지 창에 표시할 수 있습니다. 다음과 같이 작업을 수행할 수 있습니다.
- JavaFX 라이브러리를 프로젝트에 연결하세요. 프로젝트 빌드 도구(Maven 또는 Gradle)를 사용하여 라이브러리를 가져오거나 직접 다운로드하여 프로젝트에 추가합니다.
- `ImageDisplay` 클래스를 JavaFX를 사용하도록 수정하고 캘린더 오픈 API 추가합니다. 아래는 코드 예시입니다.
import javafx.application.Application;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javafx.scene.control.DatePicker;
public class ImageDisplay extends JFrame {
private String imagePath;
private String anotherImagePath;
private Rectangle clickableArea;
private final JFXPanel fxPanel = new JFXPanel();
public ImageDisplay(String imagePath, String anotherImagePath, Rectangle clickableArea) {
this.imagePath = imagePath;
this.anotherImagePath = anotherImagePath;
this.clickableArea = clickableArea;
add(fxPanel);
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
showImage();
}
public void showImage() {
SwingUtilities.invokeLater(() -> {
try {
BufferedImage image = ImageIO.read(new File(imagePath));
ImageIcon icon = new ImageIcon(image);
JLabel label = new JLabel(icon);
this.add(label);
this.pack();
this.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (clickableArea.contains(e.getPoint())) {
showDatePicker();
}
}
});
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
} catch (IOException e) {
System.out.println("Error reading image: " + e.getMessage());
System.exit(1);
}
});
}
private void showDatePicker() {
SwingUtilities.invokeLater(() -> {
Runtime.getRuntime().runFinalization();
javafx.application.Platform.runLater(() -> {
DatePicker datePicker = new DatePicker();
Stage datePickerStage = new Stage();
StackPane stackPane = new StackPane(datePicker);
Scene scene = new Scene(stackPane);
datePickerStage.setTitle("날짜 선택");
datePickerStage.setScene(scene);
datePickerStage.show();
});
});
}
}
다음과 같이 코드를 수정하면, 원하는 이미지 영역을 클릭할 때 팝업으로 캘린더가 출력됩니다. 이 코드를 사용하면, 이미지 창에 캘린더를 성공적으로 추가할 수 있습니다. 참고: JavaFX를 사용하려면 Java 11 이상의 버전이 필요합니다. Java 8을 사용하면 JavaFX가 Java에 포함되어 있지만 다양한 호환성 문제가 있을 수 있습니다. 최신 버전의 Java를 사용하여 이러한 문제를 해결하는 것이 좋습니다.
'2023 > PROJECT' 카테고리의 다른 글
| [JAVA] 검색창 (0) | 2023.06.21 |
|---|---|
| [JAVA] 캘린더 UI (0) | 2023.06.20 |
| [JAVA] 오라클 일정 추가 캘린더 (0) | 2023.06.20 |
| [JAVA] 둥근 검색창 (0) | 2023.06.19 |
| [JAVA] 지정된 좌표 클릭 이벤트 (0) | 2023.06.19 |