import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
* @author Darimont<br>
* @version 1.0<br>
*/
public class SaveImage extends JFrame {
private final JButton btnSave;
private final JPanel drawPanel;
//Unser Bild das wir später speichern wollen...
private final BufferedImage myImg =
new BufferedImage(320, 240, BufferedImage.TYPE_INT_RGB);
private final Graphics gDrawPanel, gBuffImg;
public SaveImage() {
super("SaveImage");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
drawPanel = new JPanel();
drawPanel.setPreferredSize(new Dimension(320, 240));
drawPanel.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(final MouseEvent e) {
final int x = e.getX();
final int y = e.getY();
//Wir zeichnen hier auf den Graphics Kontext von drawPanel und von myImg
gDrawPanel.drawLine(x, y, x, y);
gBuffImg.drawLine(x, y, x, y);
}
});
btnSave = new JButton("Save me");
btnSave.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent e) {
try {
//Wir schreiben das Bild in die Datei C:\TestImage.jpg
ImageIO.write(myImg, "jpg", new File("c:/TestImage.jpg"));
} catch (final IOException e1) {
e1.printStackTrace();
}
}
});
getContentPane().add(drawPanel, BorderLayout.CENTER);
getContentPane().add(btnSave, BorderLayout.SOUTH);
pack();
setVisible(true);
gDrawPanel = drawPanel.getGraphics();
gBuffImg = myImg.getGraphics();
//...wir malen das BufferedImage zuerst mit weis aus, da es defaultmäßig komplett schwarz ist.
gBuffImg.setColor(Color.WHITE);
gBuffImg.fillRect(0, 0, 320, 240);
gBuffImg.setColor(Color.BLACK);
}
public static void main(final String[] args) {
new SaveImage();
}
}