- 浏览: 84079 次
- 性别:
文章分类
最新评论
-
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 760代码来源:《疯狂Java讲义》 ... -
网络编程
2012-10-13 13:59 759------------------------------ ... -
Java 剪贴板程序
2012-10-01 19:12 1368hoverlees 写道 众所周知,这个包主要是与系统剪切板 ... -
ImageIO读取位图显示在Frame中
2012-10-01 09:14 875package cn.sisy.awt; import ja ... -
Java的Image抽象类与BufferedImage实现类
2012-10-01 01:03 2187代码一串&&执行流程 package c ... -
==以及equals的学习
2012-09-29 23:02 0相等性的比较(==) 1) 对于原生数据类型来说,比较的是 ... -
Java中的access modifier及instanceof运算符
2012-09-30 10:40 839访问修饰符(access modifier) 1) pub ... -
static其它
2012-09-29 19:39 6651. static代码块:静态代码块。 静态代码块的作用也是 ... -
final关键字
2012-09-29 19:32 664final关键字可以修饰属性、方法、类。 final ... -
Static关键字
2012-09-29 12:10 896风中叶 写道 static修饰属性:无论一个类生成了多少个对 ... -
Java构造器及几个基本概念
2012-09-29 11:58 1031关于构造器 carey-pro 写道 1)jav ... -
流程控制---读书笔记
2012-09-29 11:40 696顺序:从上之下,无判 ... -
抽象类与接口
2012-09-28 18:03 740抽象类视频学习代码记录: 首先定义一个抽象类及两个实现类 ... -
Java与多态
2012-09-28 16:57 798多态:所谓多态,就是父类型的引用可以指向子类型的对象,或者接口 ... -
继承与重写
2012-09-28 11:33 654重写其实是继承的范畴内的一个概念, 为了说明这两个概念,我们 ... -
关于java变量的几个概念
2012-08-10 11:32 735成员变量:指类范围内 ... -
Java中如何使用数组?
2012-08-10 09:16 723一:定义一个数组 type[] arrayName; 二: ... -
Java抽象类、接口简单小结
2012-01-05 15:02 861一、抽象类 package cn.oo; public ... -
finally里的语句一定会执行吗?
2011-12-11 16:06 3575前几天去面试,其中有两道面试题。如下 一:finall ... -
String与==
2011-10-18 21:19 0public class TestString{ publ ...
相关推荐
### Java实用案例教程第6章Java绘图 #### 教学目标 - 掌握字体设置的相关知识与...在实际开发过程中,还可以进一步探索更多高级特性,如使用`BufferedImage`来提高绘图性能,或是利用第三方库扩展Java的绘图能力。
在Java中,绘图主要依赖于Java2D API,这是一个强大的图形处理框架,提供了大量的类和方法来实现复杂的图形绘制。 首先,我们要了解Java绘图的基本元素。Java中的绘图基于坐标系统,这个系统定义了X和Y轴,X轴从左...
在Java编程环境中,开发一个绘图板程序是一项有趣且实用的任务。这个名为"Java下的绘图板程序"的项目提供了一个交互式的平台,允许用户绘制各种形状,输入文字,并能够以常见的图像格式如PNG、JPG和BMP保存他们的...
Java绘图技术是Java开发中的一个重要领域,它允许开发者创建丰富的图形用户界面(GUI)和进行复杂的图形操作。在Java中,绘图主要通过Java AWT(Abstract Window Toolkit)和Swing库来实现。EJB(Enterprise ...
这两个库提供了多种绘图类和方法,使得开发人员能够创建出复杂的图形、图表以及可视化应用。 首先,我们来看Java AWT。AWT是Java早期的图形用户界面(GUI)库,它依赖于操作系统提供的原生窗口系统。AWT中的`...
`paintComponent()`方法用于绘制三角形,我们定义了三个点来表示三角形的顶点,然后创建了一个`Polygon`对象。最后,我们设置了绘图颜色并调用`drawPolygon()`方法来绘制三角形。 在`main()`方法中,我们创建了一个...
在本实验中,我们将深入探讨如何使用Java语言创建一个简易的绘图程序。这个程序将允许用户通过编程的方式来绘制各种图形,从而理解Java图形处理的基本原理和方法。实验十三的主题是"Java语言程序设计——绘图实践",...
- `JToggleButton[] button = new JToggleButton[3]`:数组用来存放三个图形选择按钮。 - `PainterPanel painter = new PainterPanel()`:实例化 `PainterPanel` 类的对象,作为绘图区域。 3. **构造函数**: - ...
Java 3D是Java平台上的一个高级图形渲染库,它为开发者提供了在应用程序中创建、操纵和显示三维图形的能力。这个“java3d-1_5_1-windows-amd64”压缩包很可能是Java 3D库的1.5.1版本,专为Windows操作系统下的AMD64...
Matlab与Java接口技术是实现两者间高效交互的重要途径,它允许我们在Matlab环境中利用Java的强大功能,同时也能让Java程序调用Matlab的功能,实现数据处理和计算任务的无缝对接。本文将详细阐述配置要求、环境配置、...
4. 绘制箭头:使用`g.fillPolygon()`方法,传入三个点的坐标(线段末端、箭头的两个顶点)来绘制三角形。 例如,以下代码展示了如何在Java Swing中创建一个简单的带箭头的线: ```java import javax.swing.JFrame;...
首先,Java 2D API 是Sun公司与Adobe系统公司合作开发的,它扩展了AWT(Abstract Windowing Toolkit)中的Graphics类和Image类,为开发者提供了强大的图形处理能力。Java 2D API的引入弥补了AWT早期版本在图形绘制、...
Java绘图程序(CAD)3是一个基于Java编程语言开发的计算机辅助设计(CAD)系统,它专注于提供基础的图形绘制和编辑功能。CAD系统在工程、建筑、设计等多个领域广泛应用,帮助用户创建、修改和分析二维或三维模型。在本...
在 Java 2D 中,与环境的交互是一个重要方面,这涉及到如何与操作系统进行通信以及如何管理屏幕设备。本节将介绍以下几个关键类: - **GraphicsEnvironment 类**:提供有关可用图形设备的信息。 - **GraphicsDevice...
在这个特定的场景中,"java 画图软件_java_" 提供了一个利用Java进行图形绘制的应用实例。这个软件模仿了CAD(计算机辅助设计)软件的功能,允许用户创建基本几何形状,如三角形、正方形、长方形和菱形。 在Java中...
本次实验主要目的是深化理解和应用Java中的类的继承与多态特性,同时结合图形用户界面设计进行实战训练。实验内容分为三个部分,旨在通过具体的编程任务来巩固面向对象编程的基本概念。 实验的第一个任务是利用多态...
在Java中,Graphics类是进行图形绘制的核心,它提供了各种方法,如drawLine(), drawRect(), fillCircle()等,用于在组件上绘制基本形状。开发者可以通过继承JPanel或JComponent类,重写paintComponent()方法,然后在...
7 java图形类中不但提供了一些绘图方法 还可以装载 jpeg 和 gif 两种格式的图形文件 在APPLET程序中显示一图片文件需用到 getImage 和 drawImage 方法 8 java中 例外可以分为三大类: Error Exception ...
2. **游戏规则**:玩家轮流在空格上下棋,先形成连续三个棋子的直线(横、竖、斜)者获胜。 3. **游戏状态检查**:每次下棋后,检查是否有玩家满足胜利条件,若有则宣布胜者,游戏结束。 4. **平局判断**:所有格子...
在这个测试类中,我们创建了三个`Circle`对象,并分别检查了`circle1`与其他两个圆的相交情况。运行这个程序,根据输出结果可以判断两圆是否相交。 总结一下,判断两圆是否相交的关键在于计算两圆心之间的距离并将...