public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.fillRect(0,0,25,25);
}
OR
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D) g;
super.paintComponent(g2);
g2.fillRect(0,0,25,25);
}
如果我使用的是Graphics2D,哪个是正确的?我还会使用paintComponent(g)或将其传递给g2吗?
对不起,如果这是一个愚蠢的问题,我会使用第二个,但我只是想知道哪些是正确的方法,以防我做错了。
答案 0 :(得分:4)
方法paintComponent
接受Graphics
作为参数,Graphics2D
是Graphics
的子类。因此,将g
传递给super.paintComponent
相当于传递g2
。但是,如果super.paintComponent
被重载,那么会有所不同,因此一个版本接受Graphics
而另一个版本接受Graphics2D
(这不是这种情况)。
答案 1 :(得分:4)
Graphics
是一个抽象类,因此无法实例化。鉴于Graphics
在本机Java库中只有两个实现Graphics2D
和DebugGraphics
,您可以假设g
将是Graphics2D
,这是第二种方法相当多余(但不是不正确)。 DebugGraphics
很少用于手绘图形。
总而言之,您可以以任何一种方式传递它,因为它们是100%等效的。