- 浏览: 84857 次
- 性别:
-
文章分类
最新评论
-
lovewendy:
...
Android绘制折线图 -
qiao522600806:
myf408 写道我运行了,怎么报错啊,报错如下:04-24 ...
Android绘制折线图 -
qiao522600806:
看看
Android绘制折线图 -
king_tt:
垃圾。运行不了,报错。
Android绘制折线图 -
贾叔叔:
很好用,感谢楼主分享。7楼不知道遇到的什么问题,把他弄得这么生 ...
Android绘制折线图
Component 类下的三个与绘图有关的方法
public void paint(Graphics g)
Paints this component.
This method is called when the contents of the component should be painted; such as when the
component is first being shown or is damaged and in need of repair. The clip rectangle in the
Graphics parameter is set to the area which needs to be painted. Subclasses of Component that
override this method need not call super.paint(g).
public void update(Graphics g)
Updates this component.
If this component is not a lightweight component, the AWT calls the update method in response to
a call to repaint. You can assume that the background is not cleared.
The update method of Component calls this component's paint method to redraw this component.
This method is commonly overridden by subclasses which need to do additional work in response to a
call to repaint. Subclasses of Component that override this method should either call super.update(g),
or call paint(g) directly from their update method.
public void repaint()
Repaints this component.
If this component is a lightweight component, this method causes a call to this component's paint method as soon as
possible. Otherwise, this method causes a call to this component's update method as soon as possible.
repaint()这个方法是一个具有刷新页面效果的方法,如果你要页面进行重画就可以调用.
从上面的流程图可以看出,在绘制动画图形时候如果没有调用repaint()方法的时候直接就是由线程调用paint()方法进行绘制,用 repaint()进行刷新显示.但是这样的动画会有个缺点(这样的效果绘制出来会有闪烁).想想做出来的动画总是隔一段时间就闪烁,有人会看吗?那么应 该怎么去除闪烁呢?我再下面的文章中会讲到.这里主要的是说明repaint()这个方法.
在调用了repaint()的时候我门可以看 出,它并不是直接就去绘制动画(调用paint()),而是通过调用AWT线程在由线程去调用另一个方法update()再由update()调用画笔 paint()方法进行绘制. 那么这里为什么要多做一步呢?这样是不是为我门多增加代码的书写量呢?回答是当然不会,如果你不调用repaint()那么 就不能实现每一次的刷新显示,就只会绘制重叠的图形,不能一张一张的绘制出来.那么其中调用的update()到底是起到什么样的作用呢?
update():清除当前显示并调用paint()方法.当然这个update()方法是可以被修改的.
综合上面的介绍可以总结出repaint()的工作原理:repaint()通过调用线程再由线程去调用update()方法清除当前显示并再调用paint()方法进行绘制下一个需要显示的内容.这样就起到了一种图片的交替显示从而在视角上形成了动画.
package cn.sisy.awt; import java.awt.BorderLayout; import java.awt.Button; import java.awt.Canvas; import java.awt.Color; import java.awt.Dimension; import java.awt.Frame; import java.awt.Graphics; import java.awt.Panel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class SimpleDraw { private final String RECT_SHAPE = "rect"; private final String OVAL_SHAPE = "oval"; private Frame f; private Button rect; private Button oval; private MyCanvas drawArea; private String shape = ""; public void init(){ f = new Frame("绘图测试"); rect = new Button("矩形"); oval = new Button("椭圆"); drawArea = new MyCanvas(); drawArea.setPreferredSize(new Dimension(250, 180)); rect.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { shape = RECT_SHAPE; drawArea.repaint(); } }); oval.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { shape = OVAL_SHAPE; drawArea.repaint(); } }); Panel p =new Panel(); p.add(rect); p.add(oval); f.add(drawArea); f.add(p , BorderLayout.SOUTH); f.pack(); f.setVisible(true); } public static void main(String[] args) { new SimpleDraw().init(); } class MyCanvas extends Canvas{ @Override public void paint(Graphics g) { if(shape.equals(RECT_SHAPE)){ Color c = new Color(220, 100, 80); g.setColor(c); g.drawRect(40, 60, 80, 100); } if(shape.equals(OVAL_SHAPE)){ Color c = new Color(80, 100, 200); g.setColor(c); g.fillOval(70, 90, 50, 40); } } } }
程序不应该主动调用组件的paint和update方法,这两个方法都由AWT系统负责调用,如果程序希望AWT系统重新绘制该组件,调用该组件的repaint方法即可。
发表评论
-
Java网络编程-More
2012-10-13 14:34 789代码来源:《疯狂Java讲义》 ... -
网络编程
2012-10-13 13:59 774------------------------------ ... -
Java 剪贴板程序
2012-10-01 19:12 1407hoverlees 写道 众所周知,这个包主要是与系统剪切板 ... -
ImageIO读取位图显示在Frame中
2012-10-01 09:14 885package cn.sisy.awt; import ja ... -
Java的Image抽象类与BufferedImage实现类
2012-10-01 01:03 2202代码一串&&执行流程 package c ... -
==以及equals的学习
2012-09-29 23:02 0相等性的比较(==) 1) 对于原生数据类型来说,比较的是 ... -
Java中的access modifier及instanceof运算符
2012-09-30 10:40 851访问修饰符(access modifier) 1) pub ... -
static其它
2012-09-29 19:39 6671. static代码块:静态代码块。 静态代码块的作用也是 ... -
final关键字
2012-09-29 19:32 683final关键字可以修饰属性、方法、类。 final ... -
Static关键字
2012-09-29 12:10 906风中叶 写道 static修饰属性:无论一个类生成了多少个对 ... -
Java构造器及几个基本概念
2012-09-29 11:58 1038关于构造器 carey-pro 写道 1)jav ... -
流程控制---读书笔记
2012-09-29 11:40 702顺序:从上之下,无判 ... -
抽象类与接口
2012-09-28 18:03 746抽象类视频学习代码记录: 首先定义一个抽象类及两个实现类 ... -
Java与多态
2012-09-28 16:57 811多态:所谓多态,就是父类型的引用可以指向子类型的对象,或者接口 ... -
继承与重写
2012-09-28 11:33 668重写其实是继承的范畴内的一个概念, 为了说明这两个概念,我们 ... -
关于java变量的几个概念
2012-08-10 11:32 740成员变量:指类范围内 ... -
Java中如何使用数组?
2012-08-10 09:16 730一:定义一个数组 type[] arrayName; 二: ... -
Java抽象类、接口简单小结
2012-01-05 15:02 874一、抽象类 package cn.oo; public ... -
finally里的语句一定会执行吗?
2011-12-11 16:06 3584前几天去面试,其中有两道面试题。如下 一:finall ... -
String与==
2011-10-18 21:19 0public class TestString{ publ ...
相关推荐
人脸识别项目实战
内容概要:本文详细描述了一个完整的Web应用程序的开发过程。该项目主要采用了Hono作为服务器框架,Prisma作为ORM工具,JWT用于认证鉴权,以及一系列现代化的最佳实践确保系统的健壮性和安全性。项目初期构建了基础架构,并设置了必要的依赖和工具。在后端方面涵盖了公共API接口的设计、CRUD增删改查逻辑、用户认证和授权等功能。此外还特别关注到了API的安全保护,如输入输出的校验,跨站请求伪造CSRF的防范,XSS防御等措施;为确保代码的质量引入了代码检测(比如ESLint搭配Prettier),并建立了完善的测试框架以保障后续开发阶段的功能正确。对于可能出现的问题预先定义了一组规范化的异常响应,并提供OpenAPI文档以方便开发者理解和调用。数据存储层面上利用了关系型与非关系型数据库各自的特性,实现了数据的有效组织,最后提供了实用的脚本,可用于种子数据插入以及执行必要的初始化工作。 适合人群:面向具有一定JavaScript/TypeScript开发经验,尤其是Node.js后台服务搭建经验的中级程序员和技术团队。 使用场景及目标:这份材料非常适合那些需要快速建立安全高效的RES
【资源介绍】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,也可以作为小白实战演练和初期项目立项演示的重要参考借鉴资料。 3、本资源作为“学习资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研和多多调试实践。 掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip掌静脉识别算法源码(门禁).zip
手势识别项目实战
(参考GUI)MATLAB BP的交通标志系统.zip
人脸识别项目实战
内容概要:本文详细介绍了 C++ 函数的基础概念及其实战技巧。内容涵盖了函数的基本结构(定义、声明、调用)、多种参数传递方式(值传递、引用传递、指针传递),各类函数类型(无参无返、有参无返、无参有返、有参有返),以及高级特性(函数重载、函数模板、递归函数)。此外,通过实际案例展示了函数的应用,如统计数组元素频次和实现冒泡排序算法。最后,总结了C++函数的重要性及未来的拓展方向。 适合人群:有一定编程基础的程序员,特别是想要深入了解C++编程特性的开发人员。 使用场景及目标:① 学习C++中函数的定义与调用,掌握参数传递方式;② 掌握不同类型的C++函数及其应用场景;③ 深入理解函数重载、函数模板和递归函数的高级特性;④ 提升实际编程能力,通过实例强化所学知识。 其他说明:文章以循序渐进的方式讲解C++函数的相关知识点,并提供了实际编码练习帮助理解。阅读过程中应当边思考边实践,动手实验有助于更好地吸收知识点。
Comsol光学仿真模型:包括纳米球 柱 Mie散射多级分解 ,Comsol光学仿真模型; 纳米球; 柱; Mie散射; 多级分解,Comsol光学仿真模型:纳米结构Mie散射多级分解
永磁同步电机全速域控制高频方波注入法、滑模观测器法SMO、加权切矢量控制Simulink仿真模型 低速域采用高频方波注入法HF,高速域采用滑膜观测器法SMO,期间采用加权形式切 送前方法 1、零低速域,来用无数字滤波器高频方波注入法, 2.中高速域采用改进的SMO滑模观测器,来用的是sigmoid函数,PLL锁相环 3、转速过渡区域采用加权切法 该仿真各个部分清晰分明,仿真波形效果良好内附详细控制方法资料lunwen 带有参考文献和说明文档,仿真模型 ,核心关键词: 1. 永磁同步电机; 2. 全速域控制; 3. 高频方波注入法; 4. 滑模观测器法SMO; 5. 加权切换矢量控制; 6. Simulink仿真模型; 7. 零低速域控制; 8. 中高速域控制; 9. 转速过渡区域控制; 10. 仿真波形效果; 11. 详细控制方法资料; 12. 参考文献和说明文档。,永磁同步电机多域控制策略的仿真研究
基于蜣螂优化算法的无人机三维路径规划【23年新算法应用】可直接运行 Matlab语言 主要内容:读取地形数据,利用蜣螂算法DBO优化三维路径,目标函数为总路径最短,同时不能撞到障碍物,效果如图所示,包括迭代曲线图、三维路径图、二维平面图等等 ,基于蜣螂优化算法;无人机;三维路径规划;总路径最短;障碍物避免;Matlab语言;迭代曲线图;三维路径图;二维平面图,蜣螂算法优化无人机三维路径规划:实时避障、路径最短新应用
清华大学2024年研究生复试上机考试题.zip
南京理工大学研究生入学考试2011年复试上机试题
手势识别项目实战
这里是3501的内容,用于复习资料
异步电动机变压变频调速系统,包含六千多字的文档、框架图、Simulink仿真模型,电力拖动、电机控制仿真设计 仿真模型+报告 开关闭环对比仿真都有,资料如图所见如所得 ,异步电动机;变压变频调速系统;六千字文档;框架图;Simulink仿真模型;电力拖动;电机控制仿真设计;开闭环对比仿真;资料如图。,异步电机控制仿真系统:六千字详解与图解
人脸识别项目实战
手势识别项目实战
人脸识别项目实战
c语言学习
c语言学习