使用javax.swing库创建一个简单的图像浏览器应用程序
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.imageio.ImageIO;
public class ImageViewer extends JFrame {
private JLabel imageLabel;
private JButton previousButton;
private JButton nextButton;
private File[] imageFiles;
private int currentIndex;
public ImageViewer(String[] fileNames) {
super("Image Viewer");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Load image files
imageFiles = new File[fileNames.length];
for (int i = 0; i < fileNames.length; i++) {
imageFiles[i] = new File(fileNames[i]);
}
// Create image label
imageLabel = new JLabel();
imageLabel.setHorizontalAlignment(JLabel.CENTER);
displayImage();
// Create previous button
previousButton = new JButton("Previous");
previousButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
previousImage();
}
});
// Create next button
nextButton = new JButton("Next");
nextButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
nextImage();
}
});
// Add components to the frame
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(imageLabel, BorderLayout.CENTER);
JPanel buttonPanel = new JPanel(new FlowLayout());
buttonPanel.add(previousButton);
buttonPanel.add(nextButton);
contentPane.add(buttonPanel, BorderLayout.SOUTH);
pack();
setVisible(true);
}
private void displayImage() {
try {
Image image = ImageIO.read(imageFiles[currentIndex]);
imageLabel.setIcon(new ImageIcon(image.getScaledInstance(800, 600, Image.SCALE_DEFAULT)));
} catch (Exception e) {
e.printStackTrace();
}
}
private void previousImage() {
currentIndex = (currentIndex - 1 + imageFiles.length) % imageFiles.length;
displayImage();
}
private void nextImage() {
currentIndex = (currentIndex + 1) % imageFiles.length;
displayImage();
}
public static void main(String[] args) {
String[] fileNames = {
"image1.jpg",
"image2.jpg",
"image3.jpg"
};
new ImageViewer(fileNames);
}
}
在这个例子中,我们使用javax.swing库创建了一个简单的图像浏览器应用程序。我们创建了一个继承自JFrame的ImageViewer类。
在类中,我们定义了图像标签(imageLabel)、前进按钮(previousButton)、后退按钮(nextButton)、图像文件数组(imageFiles)和当前图像索引(currentIndex)。
在构造函数中,我们首先加载图像文件,并将其保存到imageFiles数组中。然后我们创建图像标签(imageLabel)并设置其对齐方式为居中。接下来,我们创建前进按钮(previousButton)和后退按钮(nextButton),并分别为它们添加动作监听器,以响应点击事件。
然后,我们将图像标签和按钮添加到容器(contentPane)中并进行布局。最后,我们调用pack()方法,将组件按其首选大小进行布局,并设置应用程序的可见性。
在displayImage()方法中,我们尝试读取当前图像文件并将其显示在图像标签中。使用ImageIO.read()方法读取图像文件,并创建Image对象。然后,我们使用ImageIcon和Image.getScaledInstance()方法将图像进行缩放,并将其设置为图像标签的图标。
在previousImage()方法中,将当前图像索引减1,并使其循环回到数组的末尾。
在nextImage()方法中,将当前图像索引加1,并使其循环回到数组的开头。
在main()方法中,我们创建了一个ImageViewer对象,并传入包含图像文件名的字符串数组。然后,应用程序启动,并显示第一张图像。用户可以通过点击按钮来切换图像。
请注意,此应用程序假设图像文件与源代码位于同一目录中。如果图像文件位于其他位置,你需要提供完整的文件路径。
