首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >paintComponent(g)还是paintComponent(g2)?

paintComponent(g)还是paintComponent(g2)?
EN

Stack Overflow用户
提问于 2016-08-18 08:41:06
回答 2查看 134关注 0票数 4
代码语言:javascript
复制
public void paintComponent(Graphics g){
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        g2.fillRect(0,0,25,25);
}

代码语言:javascript
复制
public void paintComponent(Graphics g){
    Graphics2D g2 = (Graphics2D) g;
    super.paintComponent(g2);
    g2.fillRect(0,0,25,25);
}

如果我使用的是Graphics2D,哪一项是正确的?我会继续使用paintComponent(g),还是将其传递给g2?

抱歉,如果这是一个愚蠢的问题,我会使用第二个问题,但我只是想知道哪种方法是正确的,以防我做错了什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-18 08:50:15

Graphics是一个抽象类,因此不能实例化。鉴于Graphics在原生Java库中只有两个实现,即Graphics2DDebugGraphics,您可以假设g将是Graphics2D,这使得第二种方法相当冗余(但不是错误的)。DebugGraphics很少用来手工绘制图形。

总而言之,你可以用任何一种方式传递它,因为它们是100%等价的。

票数 4
EN

Stack Overflow用户

发布于 2016-08-18 08:45:28

方法paintComponent接受Graphics作为参数,而Graphics2DGraphics的子类。因此,将g传递给super.paintComponent等同于传递g2。但是,如果super.paintComponent被重载,使得一个版本接受Graphics,而另一个版本接受Graphics2D (这里不是这种情况),情况就不同了。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39008276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档