import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class IImageIO {
//创建BufferedImage对象
BufferedImage image;
class DrawArea extends Canvas {
@Override
public void paint(Graphics g) {
g.drawImage(image, 0, 0, null);
}
}
DrawArea drawArea = new DrawArea();
public void init() {
Frame frame = new Frame("imageIO的练习");
//创建上方菜单并将菜单项放在菜单条中
MenuBar menuBar = new MenuBar();
MenuItem open = new MenuItem("打开", new MenuShortcut(KeyEvent.VK_Y, false));
MenuItem save = new MenuItem("保存", new MenuShortcut(KeyEvent.VK_Y, true));
Menu menu = new Menu("文件");
//绑定菜单项功能
open.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
FileDialog fileDialog = new FileDialog(frame, "打开图片 ", FileDialog.LOAD);
fileDialog.setVisible(true);
String directory = fileDialog.getDirectory();
String file = fileDialog.getFile();
try {
image = ImageIO.read(new File(directory, file));
drawArea.repaint();
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
/* Button button = new Button("绘制圆形");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
drawArea.repaint();
}
});
frame.add(button,BorderLayout.SOUTH);*/
save.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
FileDialog fileDialog = new FileDialog(frame, "保存图片", FileDialog.SAVE);
fileDialog.setVisible(true);
String directory = fileDialog.getDirectory();
String file = fileDialog.getFile();
try {
ImageIO.write(image, "JPEG", new File(directory, file));
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
menu.add(open);
menu.add(save);
menuBar.add(menu);
frame.setMenuBar(menuBar);
frame.add(drawArea);
//frame.add(dialog);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//组装
frame.setBounds(200, 200, 740, 508);
frame.setVisible(true);
}
public static void main(String[] args) {
new IImageIO().init();
}
}
为什么我ImageIO打开图片没有重绘