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)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章