[問題] Component.paint() 的呼叫?

看板java作者 (siri)時間17年前 (2008/04/11 07:18), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/1
最近正在看Java Concepts by Cay Horstmann這本書 裡面有一章講到drawing shapes 例子是在一個frame裡面畫兩個長方形 有兩個files:RectangleComponent.java跟RectangleViewer.java code如下 import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import javax.swing.JPanel; import javax.swing.JComponent; public class RectangleComponent extends JComponent{ public void paintComponent(Graphics g){ Graphics2D g2 = (Graphics2D) g; Rectangle box = new Rectangle(5,10,20,30); g2.draw(box); box.translate(15,25); g2.draw(box); } } import javax.swing.JFrame; public class RectangleViewer{ public static void main(String arg[]){ JFrame frame = new JFrame(); frame.setSize(300,400); frame.setTitle("Two rectangles"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); RectangleComponent component = new RectangleComponent(); frame.add(component); frame.setVisible(true); } } 我的問題是 為什麼paintComponent這個method 不用作用在RectangleComponent這個object上? 為什麼不需要類似 component.paintComponent()這樣的code 我知道我的問題一定很蠢 可是就真的很疑惑 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 160.39.89.42

04/11 08:19, , 1F
因為 frame 會自己把所有 member 的 paintComponent
04/11 08:19, 1F

04/11 08:20, , 2F
call 一次 (為了再推這四字等了一分鐘... 該換個短 id)
04/11 08:20, 2F

04/11 10:03, , 3F
在下也有同感><"
04/11 10:03, 3F
文章代碼(AID): #17_g0jXJ (java)