java画板小demo(一)

2014-11-24 10:24:08 · 作者: · 浏览: 0

用java写的一个画板demo 是Java课程的一个作业,比较简单 直接贴代码,有不完善的地方,但是因为对swing编程没什么兴趣 所以暂时不想改了
MyPanel.java
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Panel;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Vector;

public class MyPanel extends Panel{

/**
*
*/
private static final long serialVersionUID = 1L;

enum DrawType
{
FreeDom,
Line,
Ellipse,
Rectangle
}

private Vector> FreedomDatas = new Vector>(); //freeDom时使用
private Vector> lineDatas = new Vector>(); //Line时使用
private Vector> ellipseDatas = new Vector>();
private Vector> rectangleDatas = new Vector>();

private Color lineColor = Color.blue;
private int lineWidth = 5;
private DrawType drawType = DrawType.FreeDom;

private Vector>> allWriteDatas = new Vector>>();
private Vector>> allReadDatas = new Vector>>();

public MyPanel()
{
addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{

switch(drawType)
{
case FreeDom:
Point p = new Point(e.getX(),e.getY());
Vector newLine = new Vector();
newLine.add(p);
FreedomDatas.add(newLine);
break;
case Line:
//画直线
Point prePoint = new Point(e.getX(),e.getY());
Vector newl = new Vector();
newl.add(prePoint);
lineDatas.add(newl);
break;
case Ellipse:
//画椭圆
Point newPoint = new Point(e.getX(),e.getY());
Vector newp = new Vector();
newp.add(newPoint);
ellipseDatas.add(newp);
break;
case Rectangle:
//画矩形
Point nPoint = new Point(e.getX(),e.getY());
Vector newn = new Vector();
newn.add(nPoint);
rectangleDatas.add(newn);
break;
}

}

public void mouseReleased(MouseEvent e)
{
switch(drawType)
{
case FreeDom:
break;
case Line:
Point endPoint = new Point(e.getX(),e.getY());
int n = lineDatas.size() - 1;
Vector newl = lineDatas.get(n);
newl.add(endPoint);
break;
case Ellipse:
Point endPoint2 = new Point(e.getX(),e.getY());
int n2 = ellipseDatas.size() - 1;