簡體   English   中英

為什么盡管覆蓋了繪畫方法,但面板仍渲染其子組件?

[英]Why does a Panel render its child components although its paint method is overridden?

就我所知, Panelpaint方法負責在屏幕上渲染整個Panel 因此,如果我“刪除”其paint方法,則什么都不應渲染。 但是,在下面的簡單示例中,盡管我覆蓋了它的paint方法,但Panel渲染了Button 為什么會這樣? Button在哪里呈現?

import java.applet.Applet;
import java.awt.Button;
import java.awt.Graphics;

public class SimplePanel extends Applet {
  public SimplePanel() {
    add(new Button("Button"));
  }
  public void paint(Graphics g) {
    // paint nothing at all
  }
}

在Swing中,可以在不影響其父對象的情況下繪制組件,這樣做是因為它效率更高。

重塗管理器決定實際需要重塗的內容,通過僅塗裝那些組件,並在可能的情況下,僅塗裝需要塗裝的那些組件來優化流程。

考慮看一下AWT和Swing中的繪畫,以獲得有關在Swing中繪畫如何工作的更多詳細信息

在AWT組件和Swing組件的繪制方式上也存在一些差異

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM