📄 compositeshape.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 + -