`
felixour
  • 浏览: 32898 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

Netjava project 画板重绘的实现

阅读更多

我们学习了自定义队列,那么下面我们就可以来实现我们画板的重绘了!
下面分析一下重绘的过程,每次画上去以后,我们就要记录这次画的是什么形状,起始坐标和中止坐标。
然后把坐标和形状放入自定义类存入队列中,然后在面板的重绘过程中遍历队列重新画出来,画板的重绘就实现啦~~

首先我们新建一个Shape类:

public class Shape {
	private String shape;
	private int x1, y1, x2, y2;
	/**
	 * 构造方法
	 * @param x1
	 * @param y1
	 * @param x2
	 * @param y2
	 * @param shape
	 */
	public Shape(int x1, int y1, int x2, int y2, String shape) {
		this.x1 = x1;
		this.y1 = y1;
		this.x2 = x2;
		this.y2 = y2;
		this.shape = shape;
	}
	/**
	 * 画图形的方法
	 * @param g
	 */
	public void draw(Graphics g) {
		//如果是直线就画线
		if (shape.equals("Line")) {
			g.drawLine(x1, y1, x2, y2);
		}else{
			//判断使x1和y1最小
			if (x1 > x2) {
				int t = x1;
				x1 = x2;
				x2 = t;
			}
			if (y1 > y2) {
				int t = y1;
				y1 = y2;
				y2 = t;
			}
			//如果图形是三角形
			if (shape.equals("Rectangle")) {
				g.drawRect(x1, y1, x2 - x1, y2 - y1);
			}
			//如果图形是圆角矩形
			if (shape.equals("RoundRect")) {
				g.drawRoundRect(x1, y1, x2 - x1, y2 - y1, 20, 20);
			}
			//如果矩形是圆
			if (shape.equals("Round")) {
				//计算半径
				int r = Math.min(x2 - x1, y2 - y1);
				g.drawOval(x1, y1, r, r);
			}
		}
	}

}

 

然后在监听器的鼠标按键那设置一下:

	 /**
	 * 鼠标按下,获取坐标x1,y1
	 */
	public void mousePressed(MouseEvent e) {
		x1 = e.getX();
		y1 = e.getY();
	}

	/**
	 * 鼠标释放,获取坐标x2,y2
	 */
	public void mouseReleased(MouseEvent e) {
		x2 = e.getX();
		y2 = e.getY();
		// 如果点的是三角形
		if (dt.getshape().equals("Triangle")) {
			if (bol) {
				//创建图形对象
				shape = new Shape(x1, y1, x2, y2, "Line");
				//画图形
				shape.draw(dt.getGraphics());
				//将图形添加到队列
				list.add(shape);
				//添加坐标
				tx1 = x1;
				ty1 = y1;
				tx2 = x2;
				ty2 = y2;
				bol = false;
			} else {
				//创建图形对象
				shape = new Shape(tx1, ty1, x2, y2, "Line");
				//将图形添加到队列
				list.add(shape);
				//画图形
				shape.draw(dt.getGraphics());
				//创建图形对象
				shape = new Shape(tx2, ty2, x2, y2, "Line");
				//将图形添加到队列
				shape.draw(dt.getGraphics());
				//画图形
				list.add(shape);
				bol = true;
			}
		} else {
			//如果不是三角形,新建画图对象,输入坐标和形状
			shape = new Shape(x1, y1, x2, y2, dt.getshape());
			//将图形添加至队列
			list.add(shape);
			//画出图形
			shape.draw(dt.getGraphics());
		}
	}

 

最后在面板上进行重绘就完成了!

public void paint(Graphics g) {
	super.paint(g);
	for (int i = 0; i < dl.getList().size(); i++) {
		// 将队列中的图形画出来
		((Shape) dl.getList().get(i)).draw(g);
	}
}

  

如果我们想添加一个按钮清除屏幕上的痕迹,就可以:

	JButton Clear = new JButton("Clear");
	Clear.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			//清除队列
			dl.getList().clear();
			//重绘窗体
			jf.repaint();
		}
	});

 

3
2
分享到:
评论

相关推荐

    java实现画板的基本功能程序

    这个特定的项目,"java实现画板的基本功能程序",利用了Java的轻量级组件(Lightweight Components)来构建这样的应用。下面将详细讨论Java轻量级组件以及如何用它们来实现画板的基本功能。 1. Java轻量级组件: ...

    java 实现 画板程序

    【Java 实现画板程序详解】 Java编程语言可以用来创建各种类型的应用程序,其中包括图形用户界面(GUI)程序。在本例中,我们将探讨如何利用Java实现一个简单的画板程序,该程序允许用户绘制直线、长方形、椭圆和...

    JAVA中的控件重绘

    在Java编程语言中,控件重绘是一个关键概念,它涉及到图形用户界面(GUI)的动态更新和定制。当我们谈论控件重绘时,我们通常指的是如何改变或更新已存在的组件外观,使其根据用户交互或其他事件进行刷新。下面将...

    基于JAVA的画板程序

    通过这个“基于JAVA的画板程序”,学生可以深入理解Java GUI编程,事件驱动的编程范式,以及如何通过Java实现图形绘制和用户交互。同时,这也是一个很好的实践项目,帮助提升问题解决和软件工程能力。

    java画板代码 可以画图形

    本篇文章将深入探讨如何使用Java实现画板功能,并通过代码示例来展示如何画出简单的几何图形。 首先,我们需要了解`java.awt.Graphics`类,它是Java AWT的核心绘图类。这个类提供了一系列的方法,如`drawLine()`, `...

    JAVA实现画板

    【JAVA实现画板】项目是一个基于JAVA编程语言的图形用户界面(GUI)应用程序,它允许用户在屏幕上绘制各种形状和线条,类似于常见的电子画板软件。这个项目可能使用了Java的Swing或JavaFX库来构建GUI,这两个库提供...

    Java 画板设计分析与实现[源码][附图]

    本主题将深入探讨Java 画板的设计、分析及其实现,同时结合源码解析,以帮助你更好地理解和应用这一技术。 首先,Java中的画板组件(java.awt.Canvas)是AWT(Abstract Window Toolkit)库的一部分,它提供了基本的...

    java 在线 画板 嵌入java-applet

    在本项目中,"java 在线 画板 嵌入java-applet" 提供了一个在线画板功能,用户可以通过浏览器直接进行绘画操作。这种技术在20世纪90年代末到21世纪初非常流行,用于创建动态、交互式的网页内容。 Java Applet 的...

    JAVA实现小画板课程设计

    【JAVA实现小画板课程设计】是一门基于Java面向对象编程技术的实践课程,旨在深化学生对Java语言的理解,特别是GUI(图形用户界面)的应用。在这个项目中,学生需要运用Java语言来创建一个简易的画板应用程序,允许...

    java实现画板

    这个“java实现画板”的项目涵盖了多个核心知识点,包括图形绘制、事件处理、颜色选择以及文件操作。下面我们将逐一探讨这些知识点。 首先,图形绘制是这个项目的基石。Java提供了AWT(Abstract Window Toolkit)和...

    用JAVA开发的画板

    开发者可能使用`drawLine()`、`drawRect()`、`fillCircle()`等方法来实现画板的基本绘图功能。 4. **颜色和样式**:在画板中,用户可能需要选择不同的颜色和线条样式。这可以通过创建`Color`对象和设置`Graphics2D`...

    java project.rar

    java project.rarjava project.rarjava project.rarjava project.rarjava project.rarjava project.rar

    javaGUI小画板

    Java GUI小画板是一个利用Java图形用户界面(GUI)技术开发的简单绘画应用程序。这个程序最初设计用于创新项目,特别是为了生成车牌字体并进行编辑。然而,随着项目的进展,这个方案最终被放弃。尽管如此,它依然...

    Java画图画板完整代码

    本项目名为“Java画图画板完整代码”,提供了实现这一功能的源码,用户可以通过它来画出长方形、正方形、椭圆,并进行自由绘画,同时还支持填充颜色和切换颜色。下面我们将详细探讨这个项目中的关键知识点。 首先,...

    Java实现简单的画板

    在本文中,我们将深入探讨如何使用Java编程语言来实现一个简单的画板应用程序。这个程序允许用户在图形用户界面上绘制各种基本形状,如线条、矩形、圆形等,从而提供了一个基本的绘画环境。 首先,我们需要引入Java...

    画画_java画板_

    在Java中,我们可以利用Java的AWT(Abstract Window Toolkit)或Swing库来创建画板,实现图形的绘制。 首先,让我们详细了解一下Java AWT和Swing库。AWT是Java最早提供的图形用户界面(GUI)工具包,它提供了基本的...

    java做的画板源代码

    在Java编程领域,一个"java做的画板源代码"项目通常是一个基于图形用户界面(GUI)的应用程序,它允许用户通过鼠标或触摸设备在屏幕上绘制图形和线条。这个项目不仅展示了Java的基础知识,还涉及了Java Swing或...

    java画板程序

    Java画板程序是一种基于Java编程语言开发的图形用户界面(GUI)应用,它允许用户通过鼠标或触控设备在屏幕上绘制图形。这个程序通常会利用Java的AWT(Abstract Window Toolkit)或Swing库来创建图形组件,如画布、...

    JAVA画板中的保存程序

    在Java编程环境中,我们可以利用内置的图形用户界面(GUI)组件和类来创建一个画板应用,让用户进行绘图操作。这个"JAVA画板中的保存程序"是一个具有特色的项目,它不仅提供了画图功能,还能将用户的绘图保存为文件...

    java共享画板

    用Java实现的共享画板实例 java socket编程

Global site tag (gtag.js) - Google Analytics