Java实训项目笔记(绘画项目)

分为两个项目分别为:

  • 《绘图项目》设计
  • 《学生管理项目》设计

(二)、《绘图项目》设计

1、完成效果图

image-20210706160800582

  • 可以画圆
  • 可以画矩形
  • 可以移动图形

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无法长大的Panda

您的鼓励是最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值