VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 634|回复: 1

急~~~~~有关applet小程序的问题

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-22 18:00:02 | 显示全部楼层 |阅读模式
我在applet小程序中写了个文字的走马灯的效果,如果用了双缓冲技术(update(Graphics g)的方法以后,那些文字会重叠在一起。如果不用就不会出现这个问题。但是不用双缓冲技术的话,那个显示的界面会很闪。
怎样才能解决这个问题?
或者给个例子出来

下面是程序的代码:
import java.awt.*;
import java.applet.*;
import java.util.Date;

public class Clock extends Applet implements Runnable
{
    Thread clockThread;
    Font font;
    String s="大 家 好 ! !";
    int count=0;
        public void init() {
               
                font = new Font("TimesRoman",Font.BOLD,48);
        }
        public void start()
        {
                if(clockThread==null)
                        clockThread=new Thread(this,"Showtime");
                        clockThread.start();
               
        }
        public void run()
        {
                //while(clockThread!=null)
                while(true)
                {
                        repaint();
                        try{
                                clockThread.sleep(300);
                        }
                        catch(InterruptedException e){}
                }
        }
       

        public void paint(Graphics g) {
    double a,b,c,d,e,f;
    int h,i,j,k,l,m;
    Date now=new Date();
    a=now.getSeconds();
    b=now.getMinutes();
    c=now.getHours();
    d=(a-15)*Math.PI/180*6;
    e=(b-15)*Math.PI/180*6;
    f=(c-15)*Math.PI/180*6;
    h=(int)(Math.sin(d)*65);
    i=(int)(Math.cos(d)*65);
    j=(int)(Math.sin(e)*54);
    k=(int)(Math.cos(e)*54);
    l=(int)(Math.sin(f)*44);
    m=(int)(Math.cos(f)*44);
    g.translate(100,100);
    play(getDocumentBase(),"a.wav");
    g.drawLine(0,0,i,h);
    g.drawLine(0,0,k,j);
    g.drawLine(0,0,m,l);
    g.drawString(now.getHours()+":"+now.getMinutes()+":"+now.getSeconds(),-10,100);
    char[] s1=s.toCharArray();
    int n1;
    String q=new String();
    for(n1=count;n1<s1.length;n1++){
            q+=s1[n1];
    }
    count++;
    g.drawString(q,100,100);
    if(count==s1.length)
    {
            count=0;
    }
    g.drawString(s,100,110);
    g.drawString(s,160,120);
        }

    public void update(Graphics g){//双缓冲技术
       paint(g);
     }

        public void stop()
        {
                clockThread.stop();
        }
}

帮帮看看拉
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-3-24 22:00:01 | 显示全部楼层
不就是要做个表嘛?每秒重画一下秒针不就行了?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表