repaint,update和paint方法的區別

2021-06-29 11:39:56 字數 1333 閱讀 7643

repaint,update和paint

這三個方法在component中定義,由於awt,swing元件都直接或間接繼承自component,所以幾乎所有的awt,swing元件都有這三個方法.這三個方法主要是用於元件的介面繪製.

這三個方法執行順序repaint() - update() - paint()

一般在程式中我們都會重灌paint()方法以執行重繪畫面的動作,但實際上除了paint()以後,update()也執行了一部分的工作,這部分工作包括用預設的背景顏

色填充,設定前景色等,由於這部分一般都無須使用者參考,所以一般都update()自動完成,然後update()再呼叫paint()執行使用者自定義的繪製操作.

一般情況不用重寫update()方法。但是如果你填充背景的顏色跟paint()中的顏色不一樣的時候就會有閃爍感。可以重寫update方法,事實上,在用雙緩衝畫圖時,一般都會選擇重灌update()而不是paint()方法,由於在執行paint()方法之前,update()還執行填充背景的動作,所以當重繪的速度很大時,填充背景的動作將很明顯,也即閃爍很大,也將,如果在paint()中用雙緩衝的話實際上起不了效果.而如果用update()的話就可以雙緩衝達到預期的效果.

當在程式中需要重繪操作時,我們一般會用repaint()而不是直接呼叫update()或者paint(),repaint()將呼叫update().而在各種awt,swing元件需要自動重新繪製時,程式也一般也會自動呼叫repaint()方法.

1、不理解paint()方法、repaint()方法、update()方法的區別;

解決思路:paint()方法是由系統自動隨機呼叫,而update()方法是我們自己人為呼叫,paint()方法必須要人為指定是什麼時候讓系統開始呼叫,但是首先在最開始的時候自己呼叫一次,所以不安全,我們一般使用update()方法,此方法必須用repaint()方法呼叫。我們呼叫paint()方法其實也是由paint()方法呼叫update()方法(注:paint()方法在加圖之前必須判

斷記憶體裡面是否有);

2、程式執行順序問題:this.memoryimage()!=null;

解決思路:虛擬機器是先載入屬性檔案;

3、路徑錯誤;

4、找不到;

解決思路:都必須是在*****跟蹤完之後才能載入,才能找到其的寬和高,不能在*****載入完之前呼叫的寬和高;

5、覆蓋;

解決思路:在畫進螢幕的時候要有一定的順序問題,背景放在最下面,一層一層往上放,要不然會發生覆蓋問題;

6、不能顯示;

解決思路:如果沒有找到,那麼那個點whith及點height列印出來都是-1;

p 和 p的區別

p 和 p的區別 舉例,如清單3 cpp view plain copy include intmain void int p arr inta p 等價於a p 即a p p p 1 intb p 等價於b p 即p p 1 b p printf a d,b d n a,b return 0 例子...

C語言指標 p 和 p及 p的區別

今天覆習了一下c語言的指標題目,發現在很多 結果題目中都出現了表示式 p p和 p,而這幾個表示式特別容易混淆。那麼通過什麼方式區分他們呢,答案就是運算子優先順序。和 指標訪問運算子 優先順序相同,根據從右往左的結合性,因此等價於 p 又因為後置 是先使用再自加,所以先取值 p,然後再讓p加1.p ...

p 和 p 岳雲鵬也可以P成公主

8月23日,岳雲鵬再次上網玩。這次他沒有自己的助手。相反,他開始給自己畫一些漂亮的 總的來說,p 會很帥。岳雲鵬也是如此。這一次岳雲鵬似乎在漂浮。事實上,他把自己的 變成了 迪斯尼王子 在此之前,迪士尼公主在逃 在網路上非常流行。如今岳雲鵬的公開賽獲得了無數人的青睞。其實岳雲鵬不僅僅p圖成了迪士尼王...