java的repaint
㈠ java中的repaint怎么用
是什么样的代码当中 的repaint
~~~~~~~
~
~
~~~~~~~~~~~~~
㈡ java中的repaint方法
我的理解如下,老师讲的有欠缺,没有讲清楚这个方法的使用范围
java里repaint()是重绘component的方法;
component中己有的图形发生变化后不会立刻显示,须使用repaint方法。
㈢ java里repaint();是干什么用的
java里repaint()是重绘component的方法;
component中己有的图形发生变化后不会立刻专显示,须使用repaint方法。
component简而言之,属组件就是对象。C++ Builder中叫组件,Delphi中叫部件,而在Visual BASIC中叫控件。
组件是对数据和方法的简单封装。C++ Builder中,一个组件就是一个从TComponent派生出来的特定对象。组件可以有自己的属性和方法。
㈣ Java中的repaint和paint
有两点不同:1、repaint有选择的调用update或者paintrepaint() = update或者paint,对于轻量级组件,repaint会调用paint;而对于重量级组件,会调用update。update一般的工作是清屏然后paint。至于为什么repaint度轻量级和重量级的处理有所不同,如果你一定希望知道再追问我。你也可以自己重写update完成自己定制的工作。2、响应方式不一样paint立即响应,而repaint则是发出重绘请求,等待awt线程选择合适的时间进行重绘。这就像,你是一个画家,而你还雇了另外一个画家——awt。有两个方法,完成绘图,第一交给awt线程,但是他什么时候完成绘画完全取决于awt的心情;第二你自己来画,这样更确定,但是你不得不管理许多细节。在非paint方法中,显示的调用任何paint方法,就相当于你自己来画;而repaint就是发出请求交给awt来画。显然我们应该确定究竟谁来画,因为两者交织的画可能带来冲突。比如awt正在绘制的过程中,你的程序乱入,在他绘制一半的图片上涂涂抹抹……。当然java的设计者希望我们把绘制全权交给awt线程来画,而不是自己来画!因为这样最安全和省事。但是我仍然认为在Java游戏编程中还是自己来管理绘制更加灵活。
㈤ JAVA中repaint()方法的调用问题。
不知道楼主的代码是什么
但是你可以把你的业务逻辑代码写到run方法版中!
即写一权个类实现Runable接口
在run方法中将你的业务逻辑放入,然后在sleep,再执行试试看。
对于swing,最好的就是保证图形和数据实现异步的模式。
至于楼主产生的效果的问题所在应该不是那样,其实底层确实是先执行代码1了,但是第一个repaint方法可能没起作用!
㈥ java 关于repaint
一般来说,
paint是系统回调函数,用户不能主动调用,需要进行重绘时,要使用repaint方法,当用回户调用答repaint方法后,实际上,系统后台调用了paint方法,所以,你的问题,要画一条直线,或者清除一条直线,那么你的绘制代码或清除代码要写到paint方法中,然后需要绘制或清除的时候,调用repaint方法,就可以了
㈦ java中repaint()方法到底应该怎么用
java里repaint()是重绘component的方法;
repaint()方法用于重绘组件,该方法有下面四种形式:
1。 void repaint()
2。public void repaint(long tm)
//指定调用update方法之前等待的最大毫秒数tm
3。public void repaint(int x,int y,int width,int height)
//重绘组件的指定矩形区域
4。public void repaint(ling tm,int x,int y,int width,int height)
repaint方法不总是马上执行,Java虽然会尽可能快的执行repaint,当Applet运行在较慢的平台上或计算机较忙时,应该考虑使用第2或4种repaint方法,指定在多长时间内必须执行repaint,否则就放弃。
repaint()这个方法是一个具有刷新页面效果的方法,如果你要页面进行重画就可以调用.一般都是在AWT的图形绘制当中调用的到.那么该方法具体的工作原来是怎么样的呢?看下面的结构流程图你就可以大概的了解了:
repaint()方法
|
|
V
AWT线程--->paint()方法-->图形绘制
|
|
V
update()方法--->paint()方法--图形绘制
从上面的流程图可以看出,在绘制动画图形时候如果没有调用repaint()方法的时候直接就是由线程调用paint()方法进行绘制,用repaint()进行刷新显示.但是这样的动画会有个缺点(这样的效果绘制出来会有闪烁).想想做出来的动画总是隔一段时间就闪烁,有人会看吗?那么应该怎么去除闪烁呢?我再下面的文章中会讲到.这里主要的是说明repaint()这个方法.
在调用了repaint()的时候我门可以看出,它并不是直接就去绘制动画(调用paint()),而是通过调用AWT线程在由线程去调用另一个方法update()再由update()调用画笔paint()方法进行绘制.那么这里为什么要多做一步呢?这样是不是为我门多增加代码的书写量呢?回答是当然不会,如果你不调用repaint()那么就不能实现每一次的刷新显示,就只会绘制重叠的图形,不能一张一张的绘制出来.那么其中调用的update()到底是起到什么样的作用呢?
update():清除当前显示并调用paint()方法.当然这个update()方法是可以被修改的,我门在另一篇文章关于"双缓冲技术"中会给大家讲到这点.
综合上面的介绍可以总结出repaint()的工作原理:repaint()通过调用线程再由线程去调用update()方法清除当前显示并再调用paint()方法进行绘制下一个需要显示的内容.这样就起到了一种图片的交替显示从而在视角上形成了动画.
㈧ Java里面Frame的repaint()!!!
我在我的机器里试验了一下,效果是一个正方形慢慢移动,楼主看一下,基本没有改什么,楼主最好把配置说一下,我的是JDK1.5
import java.awt.Frame;
import java.awt.Frame;
import java.awt.Color;
import java.awt.Graphics;
import java.util.Timer;
public class LLDraw extends Frame {
public int xpos;
public LLDraw() {
this.setTitle("ll");
this.setSize(400, 500);
this.setBackground(Color.pink);
this.setVisible(true);
}
public static void main(String[] args) {
new LLDraw().draw();
}
public void paint(Graphics g) {
System.out.println(this.xpos);
g.drawRect(this.xpos, 30+this.xpos, 50, 50);
System.out.println("draw");
}
public void draw() {
System.out.println("Yeah!");
while (true) {
try {
Thread.sleep(1000);
System.out.println("sleep");
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("repaint");
this.xpos += 1;
super.repaint();
}
}
}
㈨ java 的 repaint() 问题
最好能把代码发出来看一看
我刚才测试了:不是paint() 函数非得和调用它的 repaint() 写在一个类里面
㈩ 关于java,paint(); repaint();
一般来说,
paint是系统回调函数,用户不能主动调用,需要进行重绘时,要使用repaint方法,当用户调用repaint方法后,实际上,系统后台调用了paint方法,所以,你的问题,要画一条直线,或者清除一条直线,那么你的绘制代码或清除代码要写到paint方法中,然后需要绘制或清除的时候,调用repaint方法,就可以了