衆所周知,如需對組件進行一些自定義的繪製,將必須重寫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)。