簡體   English   中英

內置類中的方法

[英]Methods in built-in classes

我對Java有點陌生。 我正在閱讀Java代碼以了解更多信息,這讓我感到困惑。 方法只有在被調用時才會執行,對嗎? 但是,諸如Runnable類中的paint()paintComponent()run()類的內置類的方法如何?一旦使用實現了這些方法的類來實例化對象,這些方法是否在未顯式調用的情況下執行? ? 那真的是這樣嗎?

像此代碼中的示例一樣,方法paint()並未真正被調用。

import javax.swing.*;
import java.awt.*;

public class FrameExampleTest{
    public static void main(String args[]){
        FrameExample frame = new FrameExample();
        frame.setSize(500,500);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

class FrameExample extends JFrame{
    PanelExample panel;
    public FrameExample(){
        Container c = getContentPane();
        panel = new PanelExample();
        c.add(panel,BorderLayout.CENTER);
    }
}

class PanelExample extends JPanel{
    public PanelExample(){
        setSize(300,200);
    }

    public void paint(Graphics g){
        g.fillArc(20,20,30,30,0,360);
    }
}

您不會調用paint或自己運行,但是JVM中的其他代碼會為您調用它。 例如,Thread類中的實例代碼將調用您的run方法。 事件循環中的代碼將調用paint或paintComponent。 隨着時間的流逝,您會發現沒有神奇的事物。 每當調用方法時,其他一些代碼就會調用它。

是。 窗口框架會為您調用paintpaintComponent方法。 它確定何時需要油漆/重新油漆(例如,何時移動,打開,重新打開窗口,調整大小等)。 對於這些方法的Javadoc有時會提到,不建議/不要求直接調用它們,但是需要實現它們來執行此類操作。

暫無
暫無

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

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