📄 myrectangle.java
字号:
package com.moveShape;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
public class MyRectangle implements Shape
{
//the start point
private Point startPoint,ULpoint,LRpoint;
//the width and the height
private int width,height;
private Color color;
private String colorName;
private boolean state;
private Point mouseSource;
private String name;
//registered observers
private ArrayList<MyObserver> myObservers;
public MyRectangle()
{
this(new Point(),200,100);
}
public MyRectangle(Point startPoint,int width,int height)
{
this.startPoint=startPoint;
this.width=width;
this.height=height;
this.ULpoint=startPoint;
this.LRpoint=new Point();
this.LRpoint.x=ULpoint.x+width;
this.LRpoint.y=ULpoint.y+height;
this.state=false;
this.color=Color.yellow;
this.colorName="yellow";
this.myObservers=new ArrayList<MyObserver>();
this.name="Rectangle";
}
public void setColor(Color color,String colorName)
{
this.color=color;
this.colorName=colorName;
}
public void draw(Graphics g)
{
g.setColor(color);
g.fillRect(startPoint.x, startPoint.y, width, height);
}
public boolean isInside(Point p)
{
boolean insideWidth=(p.getX()>=startPoint.getX())&&(p.getX()<=(startPoint.getX()+width));
boolean insideHeight=(p.getY()>=startPoint.getY())&&(p.getY()<=(startPoint.getY()+height));
if(insideWidth&&insideHeight)
{
state=true;
}
else
{
state=false;
}
mouseSource=p;
return state;
}
public void move(Point mouseDestination)
{
if(state==true)
{
Point destination=new Point();
destination.x=startPoint.x+(int)(mouseDestination.getX()-mouseSource.getX());
destination.y=startPoint.y+(int)(mouseDestination.getY()-mouseSource.getY());
this.startPoint=destination;
this.mouseSource=mouseDestination;
}
}
public void changeColor(Color color,String colorName)
{
if(state==true)
{
this.color=color;
this.colorName=colorName;
for(MyObserver observer: myObservers)
{
observer.update(color);
}
}
}
public void registerObserver(MyObserver observer)
{
myObservers.add(observer);
}
public void deleteObserver(MyObserver observer)
{
myObservers.remove(observer);
}
public void save(String fileName,int num)
{
try
{
FileOutputStream out=new FileOutputStream(new File(fileName),true);
String name = "name"+num+" = rectangle\n";
String pointX="Point_x"+num+" = "+startPoint.x+"\n";
String pointY="Point_y"+num+" = "+startPoint.y+"\n";
String width="Width"+num+" = "+this.width+"\n";
String height="Height"+num+" = "+this.height+"\n";
String color="Color"+num+" = "+this.colorName+"\n";
out.write(name.getBytes());
out.write(pointX.getBytes());
out.write(pointY.getBytes());
out.write(width.getBytes());
out.write(height.getBytes());
out.write(color.getBytes());
out.flush();
out.close();
}catch(IOException e)
{
}
}
public void setState(boolean state)
{
this.state=state;
}
public void contain(Shape shape)
{
// TODO Auto-generated method stub
}
public ArrayList<Shape> out()
{
// TODO Auto-generated method stub
return null;
}
public String getDescrption()
{
// TODO Auto-generated method stub
return name;
}
public Point getLRpoint()
{
// TODO Auto-generated method stub
return this.LRpoint;
}
public Point getULpoint()
{
// TODO Auto-generated method stub
return this.ULpoint;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -