⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compositeshape.java

📁 自己写的一个Java画图板程序 支持鼠标拖动图形 选中图形 改变颜色等 推荐使用Eclipse来运行
💻 JAVA
字号:
package project;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.io.Serializable;
import java.util.ArrayList;

//组合图形,实现了Shape接口
public class CompositeShape implements Shape, Serializable{

	
	private static final long serialVersionUID = 140070151575209882L;

	private ArrayList<Shape> compositeArrayList = new ArrayList<Shape>();
	
	
	
	
	//compositeArrayList中记录了组合图形中所包含的所有成员
	//在compositeArrayList中添加新的图形
	public void addShape(Shape shape)
	{
		compositeArrayList.add(shape);
	}
	
	
	
	//委派给所有成员图形去实现draw方法
	public void draw(Graphics g) 
	{
		for(Shape shape : compositeArrayList)
		{
			g.setColor(Color.BLACK);
			g.drawString("C", shape.getX(), shape.getY());
			
			
			
			
			shape.draw(g);
			
			
		}
		
	}
	
	
	//对于组合图形,只要鼠标在其中一个成员图形内,则判定鼠标就在组合图形内
	public boolean isInShape(int mouseX, int mouseY) 
	{
		boolean result = false;
		
		for(Shape shape : compositeArrayList)
		{
			if(shape.isInShape(mouseX, mouseY))
			{
				result = true;
				break;
			}
			
		}
		
		
		return result;
	}




	public Color getBorderColor() {
		return null;
	}






	public int getOriginalX() {
		return -1;
	}




	public int getOriginalY() {
		
		return -1;
	}




	public int getX() {
		
		return -1;
	}




	public int getY() {
		
		return -1;
	}




	//委派给所有成员图形去实现setBorderColor方法
	public void setBorderColor(Color color) {
		
		for(Shape shape : compositeArrayList)
		{
			shape.setBorderColor(color);
		}
	}

	//委派给所有成员图形去实现setFillColor方法
	public void setFillColor(Color color) {
		
		for(Shape shape : compositeArrayList)
		{
			shape.setFillColor(color);
		}
	}






	//委派给所有成员图形去实现setOriginalX方法
	public void setOriginalX(int x) {
		
		for(Shape shape : compositeArrayList)
		{
			shape.setOriginalX(shape.getX());
		}
	}



	//委派给所有成员图形去实现setOriginalY方法
	public void setOriginalY(int y) {
		
		for(Shape shape : compositeArrayList)
		{
			shape.setOriginalY(shape.getY());
		}
	}




	public void setX(int x) {
		
	}




	public void setY(int y) {
		
	}
	
	

	public ArrayList<Shape> getCompositeArrayList()
	{
		return compositeArrayList;
	}
	//委派给所有成员图形去实现move方法
	public void move(Point mouseOriginalPoint, Point mouseEndPoint)
	{
		for(Shape shape : compositeArrayList)
		{
			shape.move(mouseOriginalPoint, mouseEndPoint);
		}
		
	}



	//对于组合图形,只要成员图形中有一个是被选中,则认为整个组合图形被选中
	public boolean getIsSelected() {
		
		boolean result = false;
		
		for(Shape shape : compositeArrayList)
		{
			if(shape.getIsSelected())
			{
				result = true;
				break;
			}
			
		}
		
		return result;
	}



	//委派给所有成员图形去实现setIsSelected方法
	public void setIsSelected(boolean isSelected) {
		
		for(Shape shape : compositeArrayList)
		{
			shape.setIsSelected(isSelected);
		}
	}



	//委派给所有成员图形去实现highlight方法
	public void highlight(Graphics2D g2) {
		
		for(Shape shape : compositeArrayList)
		{
			shape.highlight(g2);
		}
	}



	//对于组合图形,只要成员图形中有一个是在鼠标选择的矩形区域内,则认为整个组合图形是在鼠标选择的矩形区域内
	public boolean isInMouseArea(Point mouseOriginalPoint, Point mouseEndPoint) {
		
		boolean result = false;
		
		for(Shape shape : compositeArrayList)
		{
			
			if(shape.isInMouseArea(mouseOriginalPoint, mouseEndPoint))
			{
				result = true;
				break;
			}
			
			
		}
		
		
		
		return result;
		
	}
	
	
	
	

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -