Java小程序动画如何使太阳不闪烁地落下

Java小程序动画如何使太阳不闪烁地落下,java,applet,awt,Java,Applet,Awt,如何使太阳落下而不损坏背景和闪烁。 我只是个彻头彻尾的傻瓜,所以请帮帮我。 我们的教授给了我们一个制作动画的任务,我真的不擅长 package javaapplication; import java.applet.Applet; import java.awt.*; import java.awt.Graphics; import java.awt.Image; import java.awt.geom.Rectangle2D; public class Animation extends

如何使太阳落下而不损坏背景和闪烁。 我只是个彻头彻尾的傻瓜,所以请帮帮我。 我们的教授给了我们一个制作动画的任务,我真的不擅长

package javaapplication;

import java.applet.Applet;
import java.awt.*;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.geom.Rectangle2D;

public class Animation extends Applet implements Runnable {

Shape rec;
Image h1,img,bg1,bg2,bg3,bg4,bg5;
Font f1,f2,f3,f4;
Color red,blue,green,brown,white,black,yellow,g1,c;

public void init() {
    rec = new Rectangle2D.Float(30,30,1180,550);
    repaint();
    Thread th = new Thread(this);
    th.start();

    red = Color.red;
    yellow = Color.yellow;
    blue = new Color(135,206,250);
    g1 = new Color(164,191,114);
    green = Color.green;
    white = Color.white;
    black = Color.black;
    brown = new Color(139,69,19);

h1 = getImage(getCodeBase(),"h1.png");
img = getImage(getCodeBase(),"sun.png");
bg1 = getImage(getCodeBase(),"c1.png");
}
public void run() 
{
    try {
        while(true) 
        {

            System.out.println(10);
            c = new Color(204,204,255);
            repaint();
            Thread.sleep(10000);
            System.out.println(2);
            c = new Color(153,153,255);
            repaint();
            Thread.sleep(1000);
            System.out.println(2);
            c = new Color(102,102,255);
            repaint();
            Thread.sleep(1000); 
            System.out.println(2);
            c = new Color(51,51,255);
            repaint();
            Thread.sleep(1000); 
            System.out.println(2);
            c = new Color(0,0,255);
            repaint();
            Thread.sleep(1000); 
            System.out.println(2);
            c = new Color(0,0,204);
            repaint();
            Thread.sleep(1000); 
            System.out.println(2);
            c = new Color(0,0,153);
            repaint();
            Thread.sleep(1000); 
            System.out.println(2);
            c = new Color(0,0,102);
            repaint();
            Thread.sleep(1000); 
            System.out.println(2);
            c = new Color(0,0,51);
            repaint();
            Thread.sleep(1000); 
        }
    } 
    catch (Exception ex) 
    {
        ex.printStackTrace();
    }
}
public void update(Graphics g) 
{
    paint(g);
}
public void paint(Graphics g) 
{
for(int sun=40;sun<550;sun++)

g.drawImage(img,950,sun,200,200,this);

    try
    {
        Thread.sleep(50);
    }
    catch(Exception e)
    {

    }

g.setColor(black);
g.fillRect(20,20,1200,700);

g.setColor(g1);
g.fillRect(30,510,1180,200);

Graphics2D d = (Graphics2D) g;
d.setColor(c);
d.fill(rec);

g.drawImage(h1,300,220,700,400,this); 
}

}
封装javaapplication;
导入java.applet.applet;
导入java.awt.*;
导入java.awt.Graphics;
导入java.awt.Image;
导入java.awt.geom.Rectangle2D;
公共类动画扩展小程序实现可运行{
形状记忆;
图像h1、img、bg1、bg2、bg3、bg4、bg5;
字体f1、f2、f3、f4;
颜色有红色、蓝色、绿色、棕色、白色、黑色、黄色、g1、c;
公共void init(){
rec=新矩形2D浮动(30,301180550);
重新油漆();
螺纹th=新螺纹(此);
th.start();
红色=颜色。红色;
黄色=颜色。黄色;
蓝色=新颜色(135206250);
g1=新颜色(164191114);
绿色=颜色。绿色;
白色=颜色。白色;
黑色=颜色。黑色;
棕色=新颜色(139,69,19);
h1=getImage(getCodeBase(),“h1.png”);
img=getImage(getCodeBase(),“sun.png”);
bg1=getImage(getCodeBase(),“c1.png”);
}
公开募捐
{
试一试{
while(true)
{
系统输出打印Ln(10);
c=新颜色(204255);
重新油漆();
睡眠(10000);
系统输出打印ln(2);
c=新颜色(153255);
重新油漆();
睡眠(1000);
系统输出打印ln(2);
c=新颜色(102255);
重新油漆();
睡眠(1000);
系统输出打印ln(2);
c=新颜色(51,51255);
重新油漆();
睡眠(1000);
系统输出打印ln(2);
c=新颜色(0,0255);
重新油漆();
睡眠(1000);
系统输出打印ln(2);
c=新颜色(0,0204);
重新油漆();
睡眠(1000);
系统输出打印ln(2);
c=新颜色(0,0153);
重新油漆();
睡眠(1000);
系统输出打印ln(2);
c=新颜色(0,0102);
重新油漆();
睡眠(1000);
系统输出打印ln(2);
c=新颜色(0,0,51);
重新油漆();
睡眠(1000);
}
} 
捕获(例外情况除外)
{
例如printStackTrace();
}
}
公共空间更新(图g)
{
油漆(g);
}
公共空间涂料(图g)
{
对于(int sun=40;sun1)为什么要编写小程序?如果是因为老师指定了小程序,请参阅。2)为什么要使用AWT?有关放弃使用组件而支持Swing的许多好理由,请参阅。