2 回答
TA贡献1817条经验 获得超6个赞
我希望你能理解 :D
首先它调用public static void main(String args[])
然后main
创建类的新实例CanvasExample
并调用它的构造函数CanvasExample()
,该构造函数创建Frame
名为“f”的类的新实例并调用类的构造函数,Frame
它将该框架的标题设置为“画布示例”
。CanvasExample()
它创建的构造函数行并将类的新实例添加MyCanvas
到Frame
名为“f”
的构造函数的第三行的实例CanvasExample()
它只是将“f”的布局设置null
为构造函数的第四行CanvasExample()
它将“f”的大小设置为 400x400
构造函数的第五行CanvasExample()
它只是显示“f”筛选(以便您可以看到它)
并在创建类的新实例时CanvasExample()
返回到构造函数的末尾main
MyCanvas
被称为它的构造和它是构造函数中设置背景“Color.GRAY”和大小的它安全工程师和所有的MyCanvas()
构造函数
,每次当再次渲染“F”需要它调用方法paint(Graphics g)
类的实例MyCanvas
位该实例较小比“f”,所以你可以看到白色后面的
白色是“f”的背景
我想这就是你所要求的。
祝你今天过得愉快
TA贡献1863条经验 获得超2个赞
它是
Canvas
类的一个实例。在 Java 中new
是用于创建对象(给定类的实例)的关键字。话虽如此 -new Canvas()
创建Canvas
类的新实例。类名后面的括号表示构造函数——当你想创建一个给定类型的对象时被调用的代码块。你得到了椭圆形,因为这个
paint
方法被调用了。它只是没有从您的代码中明确调用。该paint
方法将始终作为所谓的“回调机制”被触发。这个方法属于Container
类。我建议阅读有关它的文档。的paint
在方法MyCanvas
类覆盖了paint
从方法Canvas
。在扩展Canvas
类和覆盖paint
方法时,您应该始终在方法的开头调用 super 方法。您可以在我已经包含在这一点的链接中了解原因。与第 1 点一样 -
new CanvasExample()
创建MyCanvas
类的新实例。更具体地说,它调用构造函数 (public CanvasExample() { ... }
)。在您提供的代码中, CanvasExample 的构造函数创建类型的新对象Frame
并调用其中的一些方法。这些方法之一是add
并且它是由类Frame
从其超类继承的-Container
。
正如Java awt API 所解释的,该add
方法:将指定的组件附加到此容器的末尾。
添加回答
举报