这是使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
主要方法中没有任何地方是在画布上调用paint().但是我运行程序并且它可以运行,那么paint()方法是如何运行的呢?
aio*_*obe 14
该paint
方法由Event Dispatch Thread(EDT)调用,基本上不受您的控制.
它的工作原理如下:当您实现用户界面(setVisible(true)
在您的情况下调用)时,Swing启动EDT.然后,此EDT线程在后台运行,无论何时需要绘制组件,它都会paint
使用适当的Graphics
实例调用该方法以供绘制.
那么,什么时候需要重新绘制一个"需要"的组件? - 比如说什么时候
repaint
简单地假设只要有必要就会调用它.
归档时间: |
|
查看次数: |
12184 次 |
最近记录: |