`
joyo_fly
  • 浏览: 86729 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

Swing中的paint机制

阅读更多

众所周知,如需对组件进行一些自定义的绘制,将必须重写paintComponent方法。当组件需要绘制时,会调用该方法,但是整个绘制过程是从 paint()(由java.awt.Component中定义)开始的。 javax.swing.JComponent继承自 java.awt.Component,并将paint()方法细化为三个独立的方法:

  • protected void paintComponent(Graphics g)
  • protected void paintBorder(Graphics g)
  • protected void paintChildren(Graphics g)

一般而言,仅仅paintComponent(Graphics g)经常被重写。

一个组件的绘制过程如下:

1.paint() 调用paintComponent() .

2.如果UI属性非空,paintComponent() 调用ui.update()。

3.如果组件的opaque属性为真,ui.udpate() 填充组件的背景色并调用ui.paint()。

4.ui.paint()渲染组件的内容。

这正是每次重写paintComponent(Graphics g)时,均需首先调用 super.paintComponent(g)。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics