为什么运行paint()??

来源:百度知道 编辑:UC知道 时间:2024/09/24 02:51:05
为什么运行paint()? 为什么背景透明?怎样不透明?
import java.awt.Graphics;
import java.awt.Color;
import javax.swing.JFrame;
import java.util.Random;

public class Colors extends JFrame
{
private static final Random rand=new Random();

public Colors()
{
super("Colors");
setSize(640,480);
setVisible(true);
setBackground(Color.white);

}

public void paint( Graphics draw )
{

draw.setColor(Color.black);
draw.fillRect(0, 0, 640, 480);
draw.drawString("Colors ", 50, 50);

Color newColor = new Color(40,60,80);
draw.setColor(newColor);
draw.drawArc(100,100,50,50,0,-180);

newColor = new Color(rand.nextInt(256),rand.nextInt(256),rand.nextInt(256));
draw.setColor(newColor);
draw.drawRect(250,100,50,50);

newColor = new Color(rand.nextInt(256),rand.nextInt(256),rand.nextInt(256));

当组建第一次加载的时候会自动调用paint()
paint是系统回调函数,当你以后在想调用paint的时候,直接写repaint()就可以了,repaint会调用paint。

背景透明?不会啊,JFrame默认是透明的,你加上setVisible(true);
就不会了啊,我这看是黑色的,你自己在看看吧

public class Colors extends JFrame {

private static final Random rand = new Random();

public Colors() {
super("Colors");
final JPanel panel = new JPanel() {

public void paint(Graphics draw) {

// draw.setColor(Color.black);
// draw.fillRect(0, 0, 640, 480);
draw.drawString("Colors ", 50, 50);

Color newColor = new Color(40, 60, 80);
draw.setColor(newColor);
draw.drawArc(100, 100, 50, 50, 0, -180);

newColor = new Color(rand.nextInt(256), rand.nextInt(256), rand.nextInt(256));
draw.setColor(newColor);
draw.drawRe