2 回答

TA貢獻(xiàn)1817條經(jīng)驗 獲得超6個贊
我希望你能理解 :D
首先它調(diào)用public static void main(String args[])
然后main
創(chuàng)建類的新實例CanvasExample
并調(diào)用它的構(gòu)造函數(shù)CanvasExample()
,該構(gòu)造函數(shù)創(chuàng)建Frame
名為“f”的類的新實例并調(diào)用類的構(gòu)造函數(shù),Frame
它將該框架的標(biāo)題設(shè)置為“畫布示例”
。CanvasExample()
它創(chuàng)建的構(gòu)造函數(shù)行并將類的新實例添加MyCanvas
到Frame
名為“f”
的構(gòu)造函數(shù)的第三行的實例CanvasExample()
它只是將“f”的布局設(shè)置null
為構(gòu)造函數(shù)的第四行CanvasExample()
它將“f”的大小設(shè)置為 400x400
構(gòu)造函數(shù)的第五行CanvasExample()
它只是顯示“f”篩選(以便您可以看到它)
并在創(chuàng)建類的新實例時CanvasExample()
返回到構(gòu)造函數(shù)的末尾main
MyCanvas
被稱為它的構(gòu)造和它是構(gòu)造函數(shù)中設(shè)置背景“Color.GRAY”和大小的它安全工程師和所有的MyCanvas()
構(gòu)造函數(shù)
,每次當(dāng)再次渲染“F”需要它調(diào)用方法paint(Graphics g)
類的實例MyCanvas
位該實例較小比“f”,所以你可以看到白色后面的
白色是“f”的背景
我想這就是你所要求的。
祝你今天過得愉快

TA貢獻(xiàn)1863條經(jīng)驗 獲得超2個贊
它是
Canvas
類的一個實例。在 Java 中new
是用于創(chuàng)建對象(給定類的實例)的關(guān)鍵字。話雖如此 -new Canvas()
創(chuàng)建Canvas
類的新實例。類名后面的括號表示構(gòu)造函數(shù)——當(dāng)你想創(chuàng)建一個給定類型的對象時被調(diào)用的代碼塊。你得到了橢圓形,因為這個
paint
方法被調(diào)用了。它只是沒有從您的代碼中明確調(diào)用。該paint
方法將始終作為所謂的“回調(diào)機制”被觸發(fā)。這個方法屬于Container
類。我建議閱讀有關(guān)它的文檔。的paint
在方法MyCanvas
類覆蓋了paint
從方法Canvas
。在擴展Canvas
類和覆蓋paint
方法時,您應(yīng)該始終在方法的開頭調(diào)用 super 方法。您可以在我已經(jīng)包含在這一點的鏈接中了解原因。與第 1 點一樣 -
new CanvasExample()
創(chuàng)建MyCanvas
類的新實例。更具體地說,它調(diào)用構(gòu)造函數(shù) (?public CanvasExample() { ... }
)。在您提供的代碼中, CanvasExample 的構(gòu)造函數(shù)創(chuàng)建類型的新對象Frame
并調(diào)用其中的一些方法。這些方法之一是add
并且它是由類Frame
從其超類繼承的-?Container
。
正如Java awt API 所解釋的,該add
方法:將指定的組件附加到此容器的末尾。
添加回答
舉報