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

📄 myrectangle.java

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

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


public class MyRectangle implements Shape, Serializable
{
	
	private static final long serialVersionUID = 1L;

	//矩形起点x,同时也是矩形坐标的x
	private int x;
	//矩形起点y,同时也是矩形坐标的y
	private int y;
	
	//矩形终点x
	private int drawEndX;
	//矩形终点y
	private int drawEndY;
	
	//矩形宽度的绝对值
	private int widthAbs;
	//矩形高度的绝对值
	private int heightAbs;
	
	
	
	//矩形起点在移动前的位置的x
	private int originalX;
	//矩形起点在移动前的位置的y
	private int originalY;
	
	
	
	private Color borderColor;
	
	private Color fillColor;
	

	private boolean isSelected = false;
	
	
	
	
	public MyRectangle()
	{
		this(0, 0, 100, 100);
	}
	
	//通过起点的x,y和终点的x,y来构造矩形
	public MyRectangle(int x, int y, int drawEndX, int drawEndY)
	{
		this.x = x;
		this.y = y;
		this.drawEndX = drawEndX;
		this.drawEndY = drawEndY;
		
		widthAbs = Math.abs(this.x - this.drawEndX);
		heightAbs = Math.abs(this.y - this.drawEndY);
		
	}

	
	//绘制方法
	public void draw(Graphics g) 
	{
		g.setColor(borderColor);
		g.drawRect(x, y, widthAbs, heightAbs);
		
		
		
		
		
		g.setColor(fillColor);
		g.fillRect(x, y, widthAbs, heightAbs);
		
		
		
		Graphics2D g2 = (Graphics2D)g;
		
		if(isSelected)
		{
			highlight(g2);
		}
		
	}

	

	//判断鼠标是否点击在图形内
	public boolean isInShape(int mouseX, int mouseY) 
	{
		if((mouseX >= x) && (mouseX <= x + widthAbs) && (mouseY >= y) && (mouseY <= y + heightAbs))
		{
			return true;
		}
		else
		{
			return false;
		}
		
		
		
	}

	
	public void setX(int x)
	{
		this.x = x;
	}
	
	public int getX()
	{
		return x;
	}
	
	public void setY(int y)
	{
		this.y = y;
	}
	
	public int getY()
	{
		return y;
	}

	public int getOriginalX() 
	{
		return originalX;
	}

	public void setOriginalX(int originalX) 
	{
		this.originalX = originalX;
	}

	public int getOriginalY() 
	{
		return originalY;
	}

	public void setOriginalY(int originalY) 
	{
		this.originalY = originalY;
	}

	public Color getBorderColor() 
	{
		return borderColor;
	}

	public void setBorderColor(Color color) 
	{
		this.borderColor = color;
	}
	
	public boolean getIsSelected()
	{
		return isSelected;
	}
	
	public void setIsSelected(boolean isSelected)
	{
		this.isSelected = isSelected;
	}
	
	
	
	public ArrayList<Shape> getCompositeArrayList()
	{
		return null;
	}
	
	//图形移动
	public void move(Point mouseOriginalPoint, Point mouseEndPoint)
	{
		setX(originalX + mouseEndPoint.x
				- mouseOriginalPoint.x);
		
		setY(originalY + mouseEndPoint.y
				- mouseOriginalPoint.y);
		
		
	}

	//图形高亮
	public void highlight(Graphics2D g2) {
		
		g2.setColor(Color.GREEN);
		g2.setStroke(new BasicStroke(3));
		
		g2.drawRect(x, y, widthAbs, heightAbs);
		
		
		
		g2.setStroke(new BasicStroke(1));
		
	}

	public void setFillColor(Color color) {
		this.fillColor = color;
	}

	//判断图形的坐标(左上角)是否在鼠标选定的矩形内
	public boolean isInMouseArea(Point mouseOriginalPoint, Point mouseEndPoint) {
		
		int width = mouseOriginalPoint.x - mouseEndPoint.x;
		int widthAbs = Math.abs(width);
		
		int height = mouseOriginalPoint.y - mouseEndPoint.y;
		int heightAbs = Math.abs(height);
		
		
		SuitableStartPoint suitableStartPoint =  new SuitableStartPoint();
		Point p = suitableStartPoint.getSuitableStartPoint(mouseOriginalPoint, mouseEndPoint);
		
		
		if((x >= p.x) && (x <= p.x + widthAbs) && (y >= p.y) && (y <= p.y + heightAbs))
		{
			return true;
		}
		else
		{
			return false;
		}
	}

}

⌨️ 快捷键说明

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