分为两个项目分别为:
- 《绘图项目》设计
- 《学生管理项目》设计
(二)、《绘图项目》设计
1、完成效果图
- 可以画圆
- 可以画矩形
- 可以移动图形
2、项目的目录
每个项目里都有注释代码,所以不再过多描述
3、每个文件下的代码
- ShapeMgr.java
package org.ngweb.drawing.manager;
import java.awt.Graphics;
import java.util.*;
import org.ngweb.drawing.shapes.inferfaze.IShape;
public class ShapeMgr {
private List<IShape> shapeList;
//类型:List
//用于存放所有的形状的接口
//构造方法
public ShapeMgr(){
shapeList = new LinkedList();
}
//添加和移除
public void addShape(IShape shape){
shapeList.add(shape);
}
//通过下标移除形状
public void removeShape(int shapeIndex){
shapeList.remove(shapeIndex);
}
//size中含有多少个形状
public int size(){
return shapeList.size();
}
//获得某个下标值得一个形状
public IShape getShape(int shapeIndex){
return shapeList.get(shapeIndex);
}
//接收一个参数Graphics g,对每一个绘制图像都需要一个Graphics g这个参数
//所有和drawing有关的参数都要加上这个参数
public void redrawing(Graphics g){
for(int i=0; i<shapeList.size();i++){
IShape shape = shapeList.get(i);
shape.drawing(g);
}
}
}
- MyCircle.java
package org.ngweb.drawing.shapes;
import java.awt.Graphics;
//继承了MyShape类
public class MyCircle extends MyShape{
//get\set方法
public int getRadius() {
return radius;
}
public void setRadius(int radius) {
this.radius = radius;
}
int radius;
//面积
@Override
public int area() {
// TODO Auto-generated method stub
return (int)Math.PI*radius*radius;
}
//字符输出,表示什么位置画的是啥
@Override
public void drawing(Graphics g) {
//画圆
g.fillOval(location.getX(), location.getY(),radius,radius);
//x,y,长=宽
System.out.println("在位置(x="+location.getX()+",y="+location.getY()+")画一个圆, 半径是=" + radius + ", 面积是="+area());
}
//判断鼠标是否在形状中:鼠标的x,y的坐标距离圆心的距离
@Override
public boolean insideMe(int x, int y) {
int centerX = location.getX() + (int)radius /2;
int centerY = location.getY() + (int)radius /2;
if (Math.sqrt((x - centerX)* (x-centerX) + (y - centerY)
*(y - centerY))< radius/2) {
return true;
}
return false;
}
}
- MyLocation.java
//表示屏幕的x,y坐标
package org.ngweb.drawing.shapes;
public class MyLocation {
private int x