사진 및 비디오 갤러리 애플리케이션은 사용자가 자신의 사진 및 비디오 컬렉션을 관리하고, 이를 갤러리 형태로 볼 수 있게 하는 프로그램입니다. 이 애플리케이션은 Java를 사용하여 구현되며, Java Swing을 활용한 GUI와 파일 입출력 기능을 포함합니다.
1. 내용 설명
사진 및 비디오 갤러리 앱은 사용자의 사진 및 비디오 파일을 로드하고, 이를 그리드 레이아웃 형태로 표시합니다. 사용자는 각 항목을 클릭하여 더 크게 볼 수 있으며, 파일 정보를 확인하고 관리할 수 있습니다.
2. 프로그램간 사용 함수 설명
- loadMediaFiles(): 사진 및 비디오 파일을 로드합니다.
- displayGallery(): 로드된 파일을 갤러리 형태로 표시합니다.
- viewMediaItem(File mediaFile): 선택한 미디어 항목을 상세히 보여줍니다.
- setupUI(): 사용자 인터페이스를 구성합니다.
3. 코딩 내용
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import java.io.IOException;
import java.util.List;
import java.util.ArrayList;
public class PhotoVideoGallery extends JFrame {
private List<File> mediaFiles = new ArrayList<>();
private JPanel galleryPanel;
public PhotoVideoGallery() {
setTitle("Photo & Video Gallery");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
galleryPanel = new JPanel(new GridLayout(0, 3, 10, 10));
JScrollPane scrollPane = new JScrollPane(galleryPanel);
add(scrollPane, BorderLayout.CENTER);
loadMediaFiles("C:/path/to/your/media/folder"); // 실제 미디어 파일이 위치한 디렉토리 경로
displayGallery();
setSize(800, 600);
setLocationRelativeTo(null);
}
private void loadMediaFiles(String directoryPath) {
File directory = new File(directoryPath);
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
if (file.isFile() && isMediaFile(file)) {
mediaFiles.add(file);
}
}
}
}
private boolean isMediaFile(File file) {
String name = file.getName().toLowerCase();
return name.endsWith(".jpg") || name.endsWith(".jpeg") || name.endsWith(".png") || name.endsWith(".mp4");
}
private void displayGallery() {
for (File file : mediaFiles) {
JButton button = new JButton(file.getName());
button.addActionListener(e -> viewMediaItem(file));
galleryPanel.add(button);
}
}
private void viewMediaItem(File mediaFile) {
if (isImageFile(mediaFile)) {
try {
BufferedImage image = ImageIO.read(mediaFile);
ImageIcon imageIcon = new ImageIcon(image);
JLabel imageLabel = new JLabel(imageIcon);
JScrollPane scrollPane = new JScrollPane(imageLabel);
JOptionPane.showMessageDialog(null, scrollPane, mediaFile.getName(), JOptionPane.PLAIN_MESSAGE);
} catch (IOException e) {
e.printStackTrace();
}
} else if (isVideoFile(mediaFile)) {
JOptionPane.showMessageDialog(this, "Video playback not implemented");
}
}
private boolean isImageFile(File file) {
String name = file.getName().toLowerCase();
return name.endsWith(".jpg") || name.endsWith(".jpeg") || name.endsWith(".png");
}
private boolean isVideoFile(File file) {
String name = file.getName().toLowerCase();
return name.endsWith(".mp4"); // 또는 다른 비디오 파일 확장자
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new PhotoVideoGallery().setVisible(true));
}
}
4. 전문용어
- Java: 객체 지향 프로그래밍 언어입니다.
- Swing: Java의 GUI 툴킷입니다.
- GUI (Graphical User Interface): 사용자가 그래픽을 통해 상호작용하는 인터페이스입니다.
- GridLayout: 컴포넌트를 격자 모양으로 배치하는 레이아웃 매니저입니다.
- JFrame: Swing 기반의 윈도우 생성을 위한 클래스입니다.
5. 라이브러리 추가 및 실행 방법
라이브러리
- Java 표준 라이브러리 (Swing, AWT)
실행 방법
- Java 개발 환경을 설치합니다.
- 위의 코드를 Java 파일로 저장합니다.
- 컴파일 후 실행합니다.
컴파일
javac -encoding UTF-8 PhotoVideoGallery.java
실행
java PhotoVideoGallery
'자바(java)' 카테고리의 다른 글
주소록 관리: 연락처 정보를 저장하고 관리할 수 있는 주소록 애플리케이션을 설계합니다. (0) | 2023.12.21 |
---|---|
단어 퍼즐 게임: 스크램블 된 글자를 재배열하여 단어를 맞추는 게임을 만듭니다. (1) | 2023.12.21 |
다기능 멋진 브라우저: 웹 페이지를 열고 탐색할 수 있는 멋진 브라우저를 만듭니다. (1) | 2023.12.21 |
전자책 페이지를 넘길 수 있는 리더 애플리케이션을 제작다. (0) | 2023.12.21 |
계좌 관리 프로그램: 윈도우에서 수입과 지출을 기록하고 잔액을 관리하는 가계부 앱을 설계합니다. (0) | 2023.12.21 |