我无法得到以下程序,请解释

时间:2013-12-09 17:56:34

标签: java swing graphics jframe jcomponent

public class aaa {
public static void main(String[] args)
{

bbb b=new bbb();
    b.setVisible(true);
    b.setSize(400, 400);

}

}
class bbb extends JFrame
{
bbb()
{

draw d=new draw();
add(d);
}

}
class draw extends JComponent
{
public void paintComponent(Graphics g)
{
    Graphics2D g2=(Graphics2D) g;
    Ellipse2D rect=new Ellipse2D.Double();
    rect.setFrameFromCenter(50,50,70,70);
    g2.draw(rect);
    g2.setPaint(Color.blue);
    g2.fill(rect);
}
}

实际上,我知道这个程序会生成一个框架并在矩形内部绘制椭圆... 我唯一的问题是,什么时候会调用方法“paintcomponent(Graphics g)”... 我知道,它是“JComponent”中的一个方法但是什么时候会被调用...请给出一个简短的解释....

还有一个问题是......它在“Graphics”类型中有参数....但它没有为“Graphics”类创建对象,那么我们如何调用它的方法(类“Graphics”中的方法“)..

我知道这是一个愚蠢的问题,但我知道我在概念中错过了一些......

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

  • paintComponent()将在需要时由系统调用,您无需担心自己调用它。
  • 您可以使用传递给调用Graphics方法的参数,例如。 g.setPaint()等。

来自docs

  

(...)绘制子系统将确定组件已损坏,并确保调用paintComponent方法。