我希望我对这个问题的解释是正确的。查看ImageIO read()
以及write()
加载和保存图像的方法。此外,有关更多详细信息和示例,请参阅使用图像和如何使用标签教程。
为简单起见,这是一个在标准对话框中显示用户选择的图像的示例:
import java.awt.BorderLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
public class ShowImage {
private static void createAndShowUI() {
final JFrame frame = new JFrame("Load Image");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton loadButton = new JButton("Display Image");
loadButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser fc = new JFileChooser(
System.getProperty("user.home"));
fc.addChoosableFileFilter(new FileNameExtensionFilter(
"Image files", new String[] { "png", "jpg", "jpeg",
"gif" }));
if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){
try {
Image image = ImageIO.read(fc.getSelectedFile());
if (image != null) {
JPanel panel = new JPanel(new BorderLayout(10, 10));
panel.add(new JLabel(fc.getSelectedFile().toString()),
BorderLayout.NORTH);
panel.add(new JLabel(new ImageIcon(image)));
JOptionPane.showMessageDialog(frame, panel);
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
});
frame.add(loadButton);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
} catch (Exception ex) {
ex.printStackTrace();
}
createAndShowUI();
}
});
}
}