java中repaint()方法到底怎么用啊?

这是小弟的部分代码publicvoidpaint(Graphicsg){if(i==1){g.drawLine(x2,y2,x1,y1);}}protectedvoidf... 这是小弟的部分代码
public void paint (Graphics g)
{
if(i==1)
{
g.drawLine(x2,y2,x1,y1);
}
}
protected void frameContentPane_mouseDragged(MouseEvent e) {
if(i==1)
{
x2=x1;
y2=x1;
x1=e.getX();
y1=e.getY();
}
repaint();
/* k++;
System.out.println(k+","+x1+","+y1);*/
}
protected void frameContentPane_mousePressed(MouseEvent e) {
if(i==1)
{
x1=e.getX();
y1=e.getY();
}
}
怎么老是报repaint(); 这行找不到符号啊?repaint()到底该怎么用啊?
展开
 我来答
dai4067767
推荐于2018-06-01 · TA获得超过331个赞
知道小有建树答主
回答量:174
采纳率:100%
帮助的人:90.9万
展开全部
java里repaint()是重绘component的方法;

repaint()方法用于重绘组件,该方法有下面四种形式:
1。public 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()方法进行绘制下一个需要显示的内容.这样就起到了一种图片的交替显示从而在视角上形成了动画.
ezj08tok
2011-03-31 · TA获得超过2044个赞
知道小有建树答主
回答量:647
采纳率:0%
帮助的人:0
展开全部
|
|
V
AWT线程--->paint()方法-->图形绘制


V
update()方法--->paint()方法--图形绘制

从上面的流程图可以看出,在绘制动画图形时候如果没有调用repaint()方法的时候直接就是由线程调用paint()方法进行绘制,用repaint()进行刷新显示.但是这样的动画会有个缺点(这样的效果绘制出来会有闪烁).想想做出来的动画总是隔一段时间就闪烁,有人会看吗?那么应该怎么去除闪烁呢?我再下面的文章中会讲到.这里主要的是说明repaint()这个方法.

在调用了repaint()的时候我门可以看出,它并不是直接就去绘制动画(调用paint()),而是通过调用AWT线程在由线程去调用另一个方法update()再由update()调用画笔paint()方法进行绘制.那么这里为什么要多做一步呢?这样是不是为我门多增加代码的书写量呢?回答是当然不会,如果你不调用repaint()那么就不能实现每一次的刷新显示,就只会绘制重叠的图形,不能一张一张的绘制出来.那么其中调用的update()到底是起到什么样的作用呢?

update():清除当前显示并调用paint()方法.当然这个update()方法是可以被修改的,我门在另一篇文章关于”双缓冲技术”中会给大家讲到这点.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
淡淡的雅兴
推荐于2017-10-15 · TA获得超过1.6万个赞
知道大有可为答主
回答量:4172
采纳率:86%
帮助的人:453万
展开全部
 java里repaint()是重绘component的方法;
  component中己有的图形发生变化后不会立刻显示,须使用repaint方法。
  component简而言之,组件就是对象。C++ Builder中叫组件,Delphi中叫部件,而在Visual BASIC中叫控件。
  组件是对数据和方法的简单封装。C++ Builder中,一个组件就是一个从TComponent派生出来的特定对象。组件可以有自己的属性和方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鬼手飘云
2015-12-02 · TA获得超过581个赞
知道小有建树答主
回答量:546
采纳率:0%
帮助的人:251万
展开全部
这个方法放在那边,要声明个对象,这个对象要能使用该方法,这方法里,可传参数,也可以不传参数,这要看业务需求!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
就要占前排
2015-11-21 · TA获得超过137个赞
知道答主
回答量:86
采纳率:100%
帮助的人:27.6万
展开全部
找对象调方法,这是java的面相对象的最常用的原则,找到相应的对象后调用就行了啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式