java中的paintComponent什么时候被调用

 我来答
千锋教育
2015-12-13 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
  当java认为需要重新绘制组件的时候由java调用。

  例如在程序中repaint();或者程序窗口最小化,然后恢复。或者程序窗口被遮挡,又显现的时候。

  注意观察,这个方法是个受保护的方法,这就是说平常并不用管这个方法,这个方法只在需要继承paintComponent(一般是JFrame)的时候,重写方法,(也可以不重新方法,如果不需要改变绘制组件动作的话)。

  下面看这个方法的源代码
  public void paintComponents(Graphics g) {
  if (isShowing()) {
  GraphicsCallback.PaintAllCallback.getInstance().
  runComponents(component, g, GraphicsCallback.TWO_PASSES);
  }
  }
  会发现这个方法会调用一个Callback。而

  private PaintCallback() {}
  public void run(Component comp, Graphics cg) {
  comp.paint(cg);
  }

  发现这个callback 会调用comp.paint(cg);

  也就是说调用paintComponent(),归根究底还是调用了写的,paint()方法。
而庅没页65
2015-08-14 · TA获得超过876个赞
知道小有建树答主
回答量:295
采纳率:100%
帮助的人:141万
展开全部
1 - paint() 中调用 paintComponent(), paintBorder(), paintChildren()

2 - 最重要的区别是“双缓冲”。Swing 组件的 paint() 中实现了双缓冲,所以不要随便去覆写,会破坏双缓冲的,————建议的方式是覆写 paintComponent()

3 - 覆写 paint(),如果新方法没有去调用 paintChildren(),还会造成子控件不显示,鼠标移上去才显示

4 - 只有极少数的情况可能需要覆写 paint() 方法,通常是为了实现特殊的绘图效果,或者特殊的优化,比如 JViewport 覆写了 paint() 方法,使用“延迟重绘”的方式来合并当滚动条移动时一些特别频繁的重绘请求,等等。

5 - paint方法定义于Component类 awt画布就可以自己重写paint方法,达到自己的目的 paintComponent定义于JComponent类 JComponent类继承了Component类,JPanel类继承了JComponent类 所以在JPanel既有paint方法,又有paintComponent方法 但是paint方法被java开发程序员重写了,进行着大量的复杂工作,如图象缓冲,解决了awt画布的抖动等问题,所以这个方法是不能被重写的,否则你的程序没办法正常工作 于是java开发程序员写了paintComponent方法替代paint方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
嘸限畅赽
2015-10-20 · TA获得超过357个赞
知道小有建树答主
回答量:413
采纳率:50%
帮助的人:109万
展开全部
显示时被paint方法调用。
paint方法会调用paintComponent,paintBorder,paintChildren等方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
WHHCNN
2015-09-10 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:67.2万
展开全部
paintComponent在对象初始化的时候应该是没有被自动调用,应该时你自己使用该方法时调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友12ee0fd
2013-06-24 · TA获得超过4.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:66%
帮助的人:1954万
展开全部
显示时被paint方法调用。
paint方法会调用paintComponent,paintBorder,paintChildren等方法。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式