该Java代码如何在不调用方法paintComponent的情况下运行?

时间:2018-09-18 12:50:50

标签: java jframe jpanel paintcomponent

我是Java编程的新手,正在学习Head First Java。 在第12章中设计框架。 在Java代码类中,main方法中没有任何方法的调用,但是当您运行它时,它会运行并运行“ paintComponent”, 这让我感到困惑。

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

class MyDrawPanel extends JPanel {
public static void main(String[] args) {
    JFrame frame = new JFrame();
    MyDrawPanel panel = new MyDrawPanel();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(panel);
    frame.setSize(300, 300);
    frame.setVisible(true);
}


public void paintComponent(Graphics g) {

    Graphics2D g2d = (Graphics2D) g;


    Color startColor = MyDrawPanel.makeRandomColor();
    Color endColor = MyDrawPanel.makeRandomColor();
    GradientPaint gradient = new GradientPaint(70,70,startColor,150,150,endColor);

    g2d.setPaint(gradient);

    g2d.fillOval(70,70,100,100);
}

public static Color makeRandomColor() {
    int red = (int) (Math.random() * 255);
    int green = (int) (Math.random() * 255);
    int blue = (int) (Math.random() * 255);

    return new Color(red, green, blue);
}

}

如果有人可以帮助我理解它,我将不胜感激,它是如何工作的? painComponent是如何调用的?

0 个答案:

没有答案