java画板小demo(二)

2014-11-24 10:24:08 · 作者: · 浏览: 3
Vector newl2 = ellipseDatas.get(n2);
newl2.add(endPoint2);
break;
case Rectangle:
Point endPoint3 = new Point(e.getX(),e.getY());
int n3 = rectangleDatas.size() - 1;
Vector newl3 = rectangleDatas.get(n3);
newl3.add(endPoint3);
break;
}
repaint(); //刷新画面
}
});

addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseDragged(MouseEvent e)
{
switch(drawType)
{
case FreeDom:
Point p = new Point(e.getX(),e.getY());
int n = FreedomDatas.size()-1; //拿到最后一条线的位置
Vector lastLine = FreedomDatas.get(n);
lastLine.add(p);
break;
case Line:
//直线
break;
case Ellipse:
//椭圆
break;
case Rectangle:
//矩形
break;
}

//repaint(); //刷新画面
}
});
}

@Override
public void paint(Graphics g)
{
g.clearRect(0, 0, getWidth(), getHeight());
g.setColor(lineColor);

Graphics2D g_2D = (Graphics2D)g;
BasicStroke stroke = new BasicStroke(lineWidth,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);
g_2D.setStroke(stroke);

switch(drawType)
{
case FreeDom:
Vector v;
Point s,e;
int i,j,m;
int n = FreedomDatas.size();
for(i=0;i {
v = FreedomDatas.get(i);
m = v.size()-1;
for(j=0;j {
s = (Point)v.get(j);
e = (Point)v.get(j+1);
g.drawLine(s.x, s.y, e.x, e.y);
}
}
break;
case Line:
//直线
int ls = lineDatas.size();
for(int li=0;li {
Vector twoPoints = lineDatas.get(li);
Point startPoint = twoPoints.get(0);
Point endPoint = twoPoints.get(1);
g.drawLine(startPoint.x,startPoint.y,endPoint.x,endPoint.y);
}
break;
case Ellipse:
//椭圆
int es = ellipseDatas.size();
for(int ei=0;ei {
Vector twoPoints = ellipseDatas.get(ei);
Point startPoint = twoPoints.get(0);
Point endPoint = twoPoints.get(1);
int width = Math.abs(endPoint.x - startPoint.x);
int height = Math.abs(endPoint.y - startPoint.y);
g.drawOval(startPoint.x,startPoint.y,width,height);
}
break;
case Rectangle:
//矩形
int rs = rectangleDatas.size();
for(int ri=0;ri {
Vector twoPoints = rectangleDatas.get(ri);