java读取文件夹全部图片进行展示,实现上下翻页
时间: 2024-01-23 16:02:24 浏览: 63
您好,可以使用Java Swing框架实现读取文件夹全部图片进行展示,并实现上下翻页操作。
以下是一个简单的示例代码:
```java
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import javax.imageio.ImageIO;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class ImageGallery extends JFrame {
private static final long serialVersionUID = 1L;
private ArrayList<File> imageFiles;
private int currentImageIndex = 0;
private JLabel imageLabel;
public ImageGallery() {
super("Image Gallery");
// 创建显示图片的标签
imageLabel = new JLabel();
imageLabel.setHorizontalAlignment(JLabel.CENTER);
imageLabel.setVerticalAlignment(JLabel.CENTER);
imageLabel.setPreferredSize(new Dimension(800, 600));
// 创建按钮面板
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
JButton prevButton = new JButton("Prev");
JButton nextButton = new JButton("Next");
buttonPanel.add(prevButton);
buttonPanel.add(Box.createHorizontalStrut(20));
buttonPanel.add(nextButton);
// 创建主面板
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.PAGE_AXIS));
mainPanel.add(imageLabel);
mainPanel.add(Box.createVerticalStrut(20));
mainPanel.add(buttonPanel);
// 添加按钮监听器
prevButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (currentImageIndex > 0) {
currentImageIndex--;
showImage();
}
}
});
nextButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (currentImageIndex < imageFiles.size() - 1) {
currentImageIndex++;
showImage();
}
}
});
// 添加到窗口
add(mainPanel, BorderLayout.CENTER);
// 设置窗口属性
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
// 选择图片文件夹
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int result = fileChooser.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
File dir = fileChooser.getSelectedFile();
if (dir.isDirectory()) {
// 读取文件夹中的图片文件
imageFiles = new ArrayList<File>();
File[] files = dir.listFiles();
for (File file : files) {
if (file.isFile()
&& (file.getName().endsWith(".jpg") || file.getName().endsWith(".jpeg")
|| file.getName().endsWith(".png") || file.getName().endsWith(".gif"))) {
imageFiles.add(file);
}
}
// 显示第一张图片
if (!imageFiles.isEmpty()) {
showImage();
}
}
}
}
private void showImage() {
try {
// 读取图片文件并设置到标签
File file = imageFiles.get(currentImageIndex);
Image image = ImageIO.read(file).getScaledInstance(800, 600, Image.SCALE_SMOOTH);
imageLabel.setIcon(new ImageIcon(image));
setTitle("Image Gallery - " + file.getName());
} catch (IOException ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
new ImageGallery();
}
}
```
运行该程序后,会弹出一个文件选择框,选择包含图片文件的文件夹,然后程序会自动读取文件夹中的所有图片文件,并显示第一张图片。通过点击“Prev”和“Next”按钮可以实现上下翻页操作。
希望对您有所帮助!
阅读全文