我无法获得下面的程序,请解释


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"中的一种方法,但是什么时候会调用它......请简要说明一下。

还有一个问题是...它具有类型"图形"的参数。但是它没有为类"图形"创建对象,那么我们如何调用它的方法(类"图形"中的方法(。

我知道

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

paintComponent()JComponent超类中的一个方法。

该类中的代码将创建一个Graphics对象并调用您的方法:

http://www.grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/javax/swing/JComponent.java#1054http://www.grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/sun/awt/RepaintArea.java#227

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

从文档中:

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

相关内容

  • 没有找到相关文章

最新更新