System.exit(0);} });
} //构造方法完毕 //绘图方法paint()
public void paint(Graphics g) { Graphics2D g2d = (Graphics2D)g; Point p1,p2;
n = paintInfo.size(); //几何图元信息
if(toolFlag==2)
g.clearRect(0,0,getSize().width,getSize().height);//
清除
for(int i=0; i p1 = (Point)paintInfo.elementAt(i); p2 = (Point)paintInfo.elementAt(i+1); size = new BasicStroke(p1.boarder,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); g2d.setColor(p1.col); g2d.setStroke(size); if(p1.tool==p2.tool) { switch(p1.tool) { case 0://画笔 Line2D line1 = new Line2D.Double(p1.x, p1.y, g2d.draw(line1); break; p2.x, p2.y); case 1://橡皮 g.clearRect(p1.x, p1.y, p1.boarder, break; p1.boarder); case 3://画直线 Line2D line2 = new Line2D.Double(p1.x, p1.y, g2d.draw(line2); break; p2.x, p2.y); case 4://画圆 Ellipse2D ellipse = new Ellipse2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y)); g2d.draw(ellipse); break; case 5://画矩形 Rectangle2D rect = new Rectangle2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y)); g2d.draw(rect); break; case 6://截断,跳过 i=i+1; break; default : } //end switch } //end if } //end for } //end绘图方法paint() //下拉式列表响应方法 public void itemStateChanged(ItemEvent e) { if(e.getSource()==ColChoice) { //预选颜色 String name = ColChoice.getSelectedItem(); if(name==\ else if(name==\ else if(name==\ else if(name==\} else if(e.getSource()==SizeChoice) { //画笔大小 String selected = SizeChoice.getSelectedItem(); if(selected==\ con = 1; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); } else if(selected==\ con = 3; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); } else if(selected==\ con = 5; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); } else if(selected==\ con = 7; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); } else if(selected==\ con = 9; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); } } //画笔大小if结束 else if(e.getSource()==EraserChoice) { //橡皮大小 String Esize = EraserChoice.getSelectedItem(); if(Esize==\ else if(Esize==\ else if(Esize==\ else if(Esize==\} } //下拉式列表响应方法结束 //鼠标拖曳事件响应方法 public void mouseDragged(MouseEvent e) { Point p1 ; switch(toolFlag){ case 0://画笔 x = (int)e.getX(); y = (int)e.getY(); p1 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p1); repaint(); break; case 1://橡皮 x = (int)e.getX(); y = (int)e.getY(); p1 = new Point(x, y, null, toolFlag, Econ); paintInfo.addElement(p1); repaint(); break; default : } } //鼠标拖曳事件响应方法结束 public void mouseMoved(MouseEvent e) {} //鼠标事件 public void update(Graphics g) { //刷新重绘 paint(g); } //鼠标press事件 public void mousePressed(MouseEvent e) { Point p2; switch(toolFlag) { case 3://直线 x = (int)e.getX(); y = (int)e.getY(); p2 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p2); break; case 4: //圆 x = (int)e.getX(); y = (int)e.getY(); p2 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p2); break; case 5: //矩形 x = (int)e.getX(); y = (int)e.getY(); p2 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p2); break; default : } } //鼠标press事件结束 //鼠标release事件:设置几何图元信息后调用paint() public void mouseReleased(MouseEvent e) { Point p3; switch(toolFlag) { case 0://画笔 paintInfo.addElement(cutflag); break; case 1: //eraser paintInfo.addElement(cutflag); break; case 3://直线 x = (int)e.getX(); y = (int)e.getY(); p3 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p3); paintInfo.addElement(cutflag); repaint(); break; case 4: //圆 x = (int)e.getX(); y = (int)e.getY(); p3 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p3); paintInfo.addElement(cutflag); repaint(); break; case 5: //矩形 x = (int)e.getX(); y = (int)e.getY(); p3 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p3); paintInfo.addElement(cutflag); repaint(); break; default: } } //鼠标release事件结束 public void mouseEntered(MouseEvent e){} //实现鼠标事件接口