1. 分析流程结构:
2. 创建监听类Listener.java:
package paint_4;
导类库import;
public class Listener implements MouseListener, MouseMotionListener{
int x1,x2,y1,y2;
private Graphics g;
private Paint paint;
private String shape;
//构造方法
public Listener (Graphics gr,Paint p){
g = gr;
paint = p;
}
//接口的抽象方法
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
//按下
public void mousePressed(MouseEvent e){
x1 = e.getX();
y1 = e.getY();
//动态获取shape
shape = paint.getShape();
}
//释放
public void mouseReleased(MouseEvent e){
x2 = e.getX();
y2 = e.getY();
if(shape.equals("line")){
g.drawLine(x1,y1,x2,y2);
}
if(shape.equals("rect")){
g.drawRect(Math.min(x1,x2),Math.min(y1,y2),Math.abs(x2-x1),Math.abs(y2-y1));
}
if(shape.equals("oval")){
g.drawOval(Math.min(x1,x2),Math.min(y1,y2),Math.abs(x2-x1),Math.abs(y2-y1));
}
}
public void mouseMoved(MouseEvent e){}
public void mouseDragged(MouseEvent e){
x2 = e.getX();
y2 = e.getY();
if(shape.equals("pencil")){
g.drawLine(x1,y1,x2,y2);
//交换坐标
x1 = x2;
y1 = y2;
}
}
}