刚好做过一个,你看看吧,可以选择颜色画图,左键拖动画图,双击是清除,你自己改改
import java.io.*;
import java.beans.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import com.sun.image.codec.jpeg.*;
import java.awt.image.*;public class bean4 extends JFrame implements Serializable,ActionListener {
JPanel contentPanel=(JPanel)this.getContentPane();
JButton cerealEyes,instantiate,btnTicks;
JTextField txtTicks;
JPanel panel0=new JPanel();
JPanel panel1=new JPanel();
JPanel panel=new JPanel();
canvas can=new canvas();
canvas1 canvas1_1=new canvas1(Color.red,can);
canvas1 canvas1_2=new canvas1(Color.blue,can);
canvas1 canvas1_3=new canvas1(Color.cyan,can);
canvas1 canvas1_4=new canvas1(Color.magenta,can);
canvas1 canvas1_5=new canvas1(Color.pink,can);
canvas1 canvas1_6=new canvas1(Color.lightGray,can);
canvas1 canvas1_7=new canvas1(Color.orange,can);
canvas1 canvas1_8=new canvas1(Color.black,can);
public bean4() {
super("myFrame");
this.setSize(400,300);
this.setResizable(false);
this.setLocation((int)this.getToolkit().getScreenSize().getWidth()/2-200,(int)this.getToolkit().getScreenSize().getHeight()/2-150);
contentPanel.setLayout(new BorderLayout());
contentPanel.add("South",panel);
contentPanel.add("Center",panel0);
panel0.setLayout(new BorderLayout());
panel0.add("Center",can);
panel0.add("West",panel1);
panel1.setLayout(new GridLayout(10,1,5,5));
panel1.setBackground(Color.white);
panel1.setSize(40,300);
panel1.add(canvas1_1);
panel1.add(canvas1_2);
panel1.add(canvas1_3);
panel1.add(canvas1_4);
panel1.add(canvas1_5);
panel1.add(canvas1_6);
panel1.add(canvas1_7);
panel1.add(canvas1_8);
cerealEyes=new JButton("cerealEyes");
panel.add(cerealEyes);
cerealEyes.addActionListener(this);
instantiate=new JButton("instantiate");
panel.add(instantiate);
instantiate.addActionListener(this);
btnTicks=new JButton("btnTicks");
panel.add(btnTicks);
btnTicks.addActionListener(this);
this.setVisible(true);
}public void actionPerformed(ActionEvent e) {
  try {
  if(((JButton)e.getSource())==cerealEyes) {
    write("can.obj");
  } else if(((JButton)e.getSource())==instantiate) {
    saveG(e);
  } else if(((JButton)e.getSource())==btnTicks) {
    read();
  }}catch(Exception ex) {}
}
Dimension dmt=this.getToolkit().getScreenSize();
java.awt.Rectangle rect=new Rectangle(dmt.width,dmt.height);
BufferedImage myImage;
public void write(String filename) throws Exception {
  myImage=new java.awt.Robot().createScreenCapture(rect);
  myImage = myImage.getSubimage(4+this.getX()+this.panel0.getX()+can.getX(),24+can.getY()+this.getY()+this.panel0.getY(),can.getWidth(),can.getHeight());
  try {
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(new FileOutputStream("p.jpg"));
    encoder.encode(myImage);
  } catch (Exception e) {
       throw new Exception("GRAPHICS ERROR,CANNOT CREATE JPEG FORMAT");
  }
}public void read() throws Exception {
  try {
  ObjectInputStream ois=new ObjectInputStream(new FileInputStream("xiruo.obj"));
  BufferedImage bi=(BufferedImage)ois.readObject();
  JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(new FileOutputStream("p1.jpg"));
  encoder.encode(bi);
  } catch(Exception ex) {System.err.print(ex.toString());throw new Exception("It's error!");}
}public void saveG(ActionEvent e) throws Exception {
  java.io.ObjectOutputStream oos=new java.io.ObjectOutputStream(new FileOutputStream("xiruo.obj"));
  oos.writeObject(myImage);
}
public void processWindowEvent(WindowEvent e) {
  if(e.getID()==WindowEvent.WINDOW_CLOSING)
    System.exit(0);
}public static void main(String args[]) {
  new bean4();
}
}