1. 내용 설명
이 프로그램은 자바를 이용하여 이미지 파일을 슬라이드쇼 형태로 보여주는 애플리케이션입니다. 사용자는 폴더에서 이미지 파일들을 선택하고, 이를 자동으로 전환하는 슬라이드쇼를 볼 수 있습니다. 이 프로그램은 Swing을 사용하여 GUI를 구현하고, Timer 클래스를 사용하여 이미지 전환 간격을 조절합니다.
2. 프로그램 간 사용 함수 설명
- loadImages(String directory): 지정된 디렉토리에서 이미지 파일들을 로드합니다.
- startSlideshow(): 슬라이드쇼를 시작합니다. Timer를 사용하여 일정 간격으로 이미지를 전환합니다.
- showNextImage(): 다음 이미지를 표시합니다. 이미지 리스트에서 현재 인덱스를 업데이트하고, 그에 해당하는 이미지를 표시합니다.
- createAndShowGUI(): 슬라이드쇼의 사용자 인터페이스를 생성하고 표시합니다.
- main(String[] args): 프로그램의 진입점입니다. GUI를 생성하고 슬라이드쇼를 시작합니다.
3. 코딩 내용
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.util.ArrayList;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
public class PhotoSlideshow {
private JFrame frame;
private JLabel imageLabel;
private ArrayList<BufferedImage> images;
private int currentImageIndex = 0;
private Timer timer;
public PhotoSlideshow() {
loadImages("C:/Users/Syetdowy/Desktop/javaex");
createAndShowGUI();
startSlideshow();
}
private void loadImages(String directory) {
images = new ArrayList<>();
File dir = new File(directory);
File[] files = dir.listFiles((d, name) -> name.endsWith(".jpg") || name.endsWith(".png"));
if (files != null) {
for (File file : files) {
try {
BufferedImage img = ImageIO.read(file);
if (img != null) {
images.add(img);
}
} catch (IOException e) {
System.err.println("Error loading image: " + file);
e.printStackTrace();
}
}
}
}
private void startSlideshow() {
timer = new Timer(2000, e -> showNextImage());
timer.start();
}
private void showNextImage() {
if (currentImageIndex >= images.size()) {
currentImageIndex = 0;
}
imageLabel.setIcon(new ImageIcon(images.get(currentImageIndex++)));
}
private void createAndShowGUI() {
frame = new JFrame("Photo Slideshow");
imageLabel = new JLabel();
frame.add(imageLabel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(PhotoSlideshow::new);
}
}
4. 전문용어
- Swing: 자바의 GUI 위젯 툴킷입니다.
- JFrame: 윈도우를 생성하는 클래스입니다.
- JLabel: 이미지 또는 텍스트를 표시하는 컴포넌트입니다.
- Timer: 정해진 간격으로 이벤트를 발생시키는 유틸리티 클래스입니다.
- BufferedImage: 이미지 데이터를 메모리에 저장하는 클래스입니다.
- ImageIO: 이미지 파일을 읽고 쓰는 데 사용되는 클래스입니다.
5. 라이브러리 추가 및 실행 방법
이 프로그램은 자바 표준 라이브러리의 Swing 컴포넌트를 사용하므로 별도의 라이브러리 추가가 필요하지 않습니다.
컴파일 방법:
javac PhotoSlideshow.java
실행 방법:
java PhotoSlideshow
'자바(java)' 카테고리의 다른 글
일기장 애플리케이션: 일기를 작성하고 저장하며 날짜별로 관리하는 애플리케이션을 개발합니다. (0) | 2023.12.19 |
---|---|
투표 시스템: 사용자가 투표하고 결과를 표시하는 간단한 투표 시스템을 만듭니다. (0) | 2023.12.19 |
텍스트 에디터: 텍스트 파일을 편집하고 저장하는 기능을 갖춘 텍스트 에디터를 개발합니다. (0) | 2023.12.19 |
음악 플레이어: 자바를 사용하여 간단한 음악 플레이어를 만들어 음악을 재생합니다. (0) | 2023.12.19 |
15강: 자바 생태계와 현업 개발 (0) | 2023.12.18 |