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

📄 drawshapecommand.java

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

//具体命令,实现了Command接口,负责绘制图形以及undo,redo操作
public class DrawShapeCommand implements Command{

	private DrawShapePanel drawShapePanel;
	
	private DrawShapeFrame drawShapeFrame;
	
	private Shape shape;
	
	
	public DrawShapeCommand(DrawShapePanel drawShapePanel)
	{
		this.drawShapePanel = drawShapePanel;
	}
	
	//必要参数,指定绘制图形所需要的DrawShapeFrame
	public void setDrawShapeFrame(DrawShapeFrame drawShapeFrame)
	{
		this.drawShapeFrame = drawShapeFrame;
	}
	
	//必要参数,指定需要绘制的图形的具体类型
	public void setShape(Shape shape)
	{
		this.shape = shape;
	}
	
	
	
	
	//执行绘制命令
	public void execute() {
			
		drawShapePanel.addShape(shape);	
		
		drawShapePanel.repaint();
		
		
		
		checkEmptyArrayList();
		
		
		//控制redo菜单与redo按钮是否可使用
		if((drawShapePanel.preservedShapeArrayList).size() > 0)
		{
			(drawShapePanel.preservedShapeArrayList).clear();
			
			(drawShapeFrame.redo).setEnabled(false);
			(drawShapeFrame.redoButton).setEnabled(false);
		}
		
		
	}

	//undo操作
	public void undo() {
		
		
		
		int lastIndex = (drawShapePanel.shapeArrayList).size() - 1;
		
		Shape shape = (drawShapePanel.shapeArrayList).get(lastIndex);
		
		(drawShapePanel.preservedShapeArrayList).add(shape);
		
		(drawShapePanel.shapeArrayList).remove(lastIndex);
		
		drawShapePanel.repaint();
		
		
		checkEmptyArrayList();
		
		
		
		
	}
	
	//redo操作
	public void redo() {
		
		
		
		int lastIndex = (drawShapePanel.preservedShapeArrayList).size() - 1;
		
		Shape shape = (drawShapePanel.preservedShapeArrayList).get(lastIndex);
		
		(drawShapePanel.shapeArrayList).add(shape);
		
		(drawShapePanel.preservedShapeArrayList).remove(lastIndex);
		
		
		
		
		drawShapePanel.repaint();
		
		
		checkEmptyArrayList();
		
		
	
	}

	//检查drawShapePanel的两个ArrayList
	//其中shapeArrayList负责记录当前存在的图形
	//preservedShapeArrayList负责记录当前不存在,但是在undo,redo时需要恢复的图形
	//根据检查的结果,控制undo菜单与undo按钮,redo菜单与redo按钮的可用与不可用
	public void checkEmptyArrayList()
	{
		if((drawShapePanel.shapeArrayList).size() <= 0)
		{
			(drawShapeFrame.undo).setEnabled(false);
			(drawShapeFrame.undoButton).setEnabled(false);
			
			
		}
		else
		{
			(drawShapeFrame.undo).setEnabled(true);
			(drawShapeFrame.undoButton).setEnabled(true);
		}
		
		if((drawShapePanel.preservedShapeArrayList).size() <= 0)
		{
			
			(drawShapeFrame.redo).setEnabled(false);
			(drawShapeFrame.redoButton).setEnabled(false);
			
			
		}
		
		else
		{
			(drawShapeFrame.redo).setEnabled(true);
			(drawShapeFrame.redoButton).setEnabled(true);
		}
	}
	

}

⌨️ 快捷键说明

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