gpt4 book ai didi

java - Paint() 是如何在没有在 main 方法中调用的情况下运行的?

转载 作者:行者123 更新时间:2023-12-01 17:20:01 25 4
gpt4 key购买 nike

这是一个关于使用 awt 包的 java 图形的初学者问题。我在网上找到了这个代码来绘制一些简单的图形。

import java.awt.*;
public class SimpleGraphics extends Canvas{

/**
* @param args
*/
public static void main(String[] args) {
SimpleGraphics c = new SimpleGraphics();
c.setBackground(Color.white);
c.setSize(250, 250);

Frame f = new Frame();
f.add(c);
f.setLayout(new FlowLayout());
f.setSize(350,350);
f.setVisible(true);
}
public void paint(Graphics g){
g.setColor(Color.blue);
g.drawLine(30, 30, 80, 80);
g.drawRect(20, 150, 100, 100);
g.fillRect(20, 150, 100, 100);
g.fillOval(150, 20, 100, 100);
}
}

主方法中没有在 Canvas 上调用paint()。但是我运行了程序并且它可以工作,那么paint()方法是如何运行的呢?

最佳答案

paint 方法由事件调度线程 (EDT) 调用,基本上不受您的控制。

它的工作原理如下:当您实现一个用户界面(在您的情况下调用setVisible(true))时,Swing 启动 EDT。然后,此 EDT 线程在后台运行,每当您的组件需要绘制时,它都会使用适当的 Graphics 实例调用 paint 方法,供您用于绘制。

那么,什么时候组件“需要”重新绘制? -- 例如当

  • 窗口大小已调整
  • 组件可见
  • 当您调用repaint
  • ...

简单地假设只要有必要,它就会被调用。

关于java - Paint() 是如何在没有在 main 方法中调用的情况下运行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61313482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com