解决方案 »

  1.   


    代码见下面:下面是DrawPanel类的几个主要成员变量和成员函数,(class DrawPanel extends JPanel implements MouseListener): // Array数组记录所有的形状,ArrayList为动态数组
    private ArrayList<Shape> Array = new ArrayList<Shape>(); Point startPoint = new Point(), endPoint = new Point();                                /**
     * 按下鼠标,取得起点坐标
     */
    @Override
    public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub
    if (e.getButton() == MouseEvent.BUTTON1) {
    startPoint.x = e.getX();
    startPoint.y = e.getY();
    mouseOpStat = MOUSEOP_DRAWSHAPE;
    }
    } /**
     * 释放鼠标,取得终点坐标
     */
    @Override
    public void mouseReleased(MouseEvent e) {
    // TODO Auto-generated method stub
    if (e.getButton() == MouseEvent.BUTTON1) {
    endPoint.x = e.getX();
    endPoint.y = e.getY();
    Line line = new Line(startPoint, endPoint);
    Array.add(line);
    repaint();
    }
    }                               public void paint(Graphics g) {
    for (int i = 0; i < Array.size(); i++) {
    Line line = new Line(startPoint, endPoint);
    line.Draw(g);
                                   }
    下面是Line类:package shape;import java.awt.*;import javax.swing.*;/**
     * 直线类
     * 
     * @author Administrator
     * 
     */
    public class Line extends Shape { Point startPoint=new Point(), endPoint=new Point();

    public Line(){

    }

    public Line(Point startPoint,Point endPoint){
    this.startPoint=startPoint;
    this.endPoint=endPoint;
    }

    public void setStartPoint(Point p) {
    // TODO Auto-generated method stub
    startPoint = p;
    } public void setEndPoint(Point p) {
    // TODO Auto-generated method stub
    endPoint = p;
    } public void Draw(Graphics g) {
    // TODO Auto-generated method stub
    g.drawLine(startPoint.x, startPoint.y, endPoint.x, endPoint.y);
    }}下面是Shape类:package shape;import java.awt.*;
    /**
     * 图形类
     * 
     * @author Administrator
     * 
     */
    public class Shape { public Shape(){

    }

    public void setStartPoint(Point p){

    } public void setEndPoint(Point p){

    } /**
     * 画图
     */
    public void Draw(Graphics g){

    } /**
     * 获得图形的类型
     * 
     * @return
     */
    public int GetType(){
    return 0;
    }}
      

  2.   

    1.没清空画布,2.Array好像用错了。