我们学习了自定义队列,那么下面我们就可以来实现我们画板的重绘了!
下面分析一下重绘的过程,每次画上去以后,我们就要记录这次画的是什么形状,起始坐标和中止坐标。
然后把坐标和形状放入自定义类存入队列中,然后在面板的重绘过程中遍历队列重新画出来,画板的重绘就实现啦~~
首先我们新建一个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(); } });
相关推荐
在本文中,我们将深入探讨如何使用Java编程语言来实现一个类似于Windows操作系统中的简易画板程序。这个Java小程序将提供基本的绘图功能,使用户能够通过鼠标或触控设备进行绘画创作。 首先,我们需要理解Java GUI...
通过这个“基于JAVA的画板程序”,学生可以深入理解Java GUI编程,事件驱动的编程范式,以及如何通过Java实现图形绘制和用户交互。同时,这也是一个很好的实践项目,帮助提升问题解决和软件工程能力。
本篇文章将深入探讨如何使用Java实现画板功能,并通过代码示例来展示如何画出简单的几何图形。 首先,我们需要了解`java.awt.Graphics`类,它是Java AWT的核心绘图类。这个类提供了一系列的方法,如`drawLine()`, `...
本主题将深入探讨Java 画板的设计、分析及其实现,同时结合源码解析,以帮助你更好地理解和应用这一技术。 首先,Java中的画板组件(java.awt.Canvas)是AWT(Abstract Window Toolkit)库的一部分,它提供了基本的...
java网络画板,实现同步绘图。
5. **文件保存与读取**: 考虑到绘图应用通常需要保存和加载作品,"Java小画板"可能实现了将图像数据序列化为文件(如.png或.bmp格式),并提供相应的读取功能。这涉及到了文件I/O操作,如`FileOutputStream`和`...
java project.rarjava project.rarjava project.rarjava project.rarjava project.rarjava project.rar
综上所述,"java swing简单画板"项目涵盖了Java GUI编程的基础知识,包括Swing组件的使用、绘图功能的实现、事件处理以及布局管理。开发者通过这些技术,为用户提供了一个简易但功能齐全的画板工具,满足了基本的...
Java GUI小画板是一个利用Java图形用户界面(GUI)技术开发的简单绘画应用程序。这个程序最初设计用于创新项目,特别是为了生成车牌字体并进行编辑。然而,随着项目的进展,这个方案最终被放弃。尽管如此,它依然...
本项目名为“Java画图画板完整代码”,提供了实现这一功能的源码,用户可以通过它来画出长方形、正方形、椭圆,并进行自由绘画,同时还支持填充颜色和切换颜色。下面我们将详细探讨这个项目中的关键知识点。 首先,...
在本文中,我们将深入探讨如何使用Java编程语言来实现一个简单的画板应用程序。这个程序允许用户在图形用户界面上绘制各种基本形状,如线条、矩形、圆形等,从而提供了一个基本的绘画环境。 首先,我们需要引入Java...
在Java中,我们可以利用Java的AWT(Abstract Window Toolkit)或Swing库来创建画板,实现图形的绘制。 首先,让我们详细了解一下Java AWT和Swing库。AWT是Java最早提供的图形用户界面(GUI)工具包,它提供了基本的...
在Java编程领域,一个"java做的画板源代码"项目通常是一个基于图形用户界面(GUI)的应用程序,它允许用户通过鼠标或触摸设备在屏幕上绘制图形和线条。这个项目不仅展示了Java的基础知识,还涉及了Java Swing或...
Java画板程序是一种基于Java编程语言开发的图形用户界面(GUI)应用,它允许用户通过鼠标或触控设备在屏幕上绘制图形。这个程序通常会利用Java的AWT(Abstract Window Toolkit)或Swing库来创建图形组件,如画布、...
用Java实现的共享画板实例 java socket编程
本项目名为“画板图像编辑器”,是一个基于Java实现的简易图像处理工具,旨在帮助初学者熟悉Java编程并实践GUI(图形用户界面)应用的开发。这个图像编辑器虽然功能相对简单,但包含了基本的图像操作,如截图和保存...
用于Android studio课程设计之画画板的应用,通过简单代码实现画板的画画,擦除和改变画笔大小,使用java语言,在Android studio平台上进行开发,实现一个可以绘图的画板,界面有相关的选择按钮。可以根据按钮切换...
8. **重绘策略**: 当图形位置改变后,需要调用`repaint()`方法通知系统重新绘制组件。`repaint()`会触发`paintComponent()`的调用,从而更新屏幕上的图形。 9. **颜色和样式**: Graphics2D允许设置颜色和线条样式,...
Java版画板的实现主要涉及GUI(图形用户界面)编程,使用了Java Swing库来创建交互式的画板应用。在本文中,我们将深入探讨如何利用Java实现一个简易的画板功能,包括界面设计、事件监听及图形绘制。 首先,我们...
本代码是编写的一个java简易小画板 计算机图形学