f(isFirstPoint) {
x1 = evn.getX();
y1 = evn.getY();
isFirstPoint = false;
}
else {
x2 = evn.getX();
y2 = evn.getY();
switch(drawType) {
case PaintingGround.LINE:
//画线
paintingGround.drawLine(x1,y1,x2,y2);
break;
case PaintingGround.RECTANGLE:
//画矫形
paintingGround.drawRect(x1,y1,x2-x1,y2-y1);
break;
case PaintingGround.ROUND:
//画圆
//两点距离公式
int size = Math.abs((int)Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)));
paintingGround.drawRound(x1,y1,size);
break;
case PaintingGround.ELLIPSE:
//画椭圆
paintingGround.drawEllipse(x1,y1,x2-x1,y2-y1);
break;
default:
break;
}
}
}
});
//各个控件的触发事件
btLine.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evn) {
drawType = PaintingGround.LINE;
}
});
btRectangle.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evn) {
drawType = PaintingGround.RECTANGLE;
}
});
btRound.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evn) {
drawType = PaintingGround.ROUND;
}
});
btEllipse.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evn) {
drawType = PaintingGround.ELLIPSE;
}
});
tbFillState.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evn) {
isFill = tbFillState.isShowing();
paintingGround.setFillState(isFill);
}
});
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
}
}
class PaintingGround extends JPanel {
public static final int LINE = 1;
public static final int RECTANGLE = 2;
public static fina
l int ROUND = 3;
public static final int ELLIPSE = 4;
private int x,y;
private int x1,y1,x2,y2;
private int width, height,size;
private int drawType = 0;
private boolean isFill = false;
//构造函数
public PaintingGround() {
setBackground(Color.black);
}
//判断是用实心还是空心的,
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.white);
if(isFill) {
switch(drawType) {
case LINE:
g.drawLine(x1,y1,x2,y2);
break;
case RECTANGLE:
g.fillRect(x,y,width,height);
break;
case ROUND:
g.fillOval(x,y,size,size);
break;
case ELLIPSE:
g.fillOval(x,y,width,height);
break;
default:
break;
}
}
else {
switch(drawType) {
case LINE:
g.drawLine(x1,y1,x2,y2);
break;
case RECTANGLE:
g.drawRect(x,y,width,height);
break;
case ROUND:
g.drawOval(x,y,size,size);
break;
case ELLIPSE:
g.drawOval(x,y,width,height);
break;
default:
break;
}
}
}
public void drawLine(int x1, int y1, int x2,int y2) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
drawType = LINE;
repaint();
}
//具体的实现方式
public void drawRect(int x,int y,int width, int heigh