用JAVA的线程做一个动态时间的代码?

做了个简单的程序,想在上面做一个动态时间,自己用线程写了下却没做出来,请高人给下代码... 做了个简单的程序,想在上面做一个动态时间,自己用线程写了下却没做出来,请高人给下代码 展开
 我来答
penghuaibing
2007-12-15
知道答主
回答量:64
采纳率:0%
帮助的人:12万
展开全部
上面写的代码为什么不用线程休眠嘛!
给你一个复杂的!自己去研究一下吧
---------------------------------------------------------
/*
* MyClock.java
*/
import java.util.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.applet.*;
import java.text.*;

/**
* a clock
* @author IceWorlD
*/
public class MyClock extends Applet implements Runnable{
private volatile Thread timer;
private int lastxs, lastys, lastxm, lastym, lastxh, lastyh; private SimpleDateFormat formatter;
private String lastdate;
private Font clockFaceFont;
private Date currentDate;
private Color handColor;
private Color numberColor;

private int xcenter = 80, ycenter = 55;

public void init(){
int x, y;

lastxs = lastys = lastxm = lastym = lastxh = lastyh = 0;
formatter = new SimpleDateFormat("EEE MMM dd hh: mm: ss yyyy",
Locale.getDefault());
currentDate = new Date();
lastdate = formatter.format(currentDate);
clockFaceFont = new Font("Serif", Font.PLAIN, 14);
handColor = Color.BLUE;
numberColor = Color.darkGray;

try{
setBackground(new Color(Integer.parseInt(getParameter("bgcolor"), 16)));
}
catch(NullPointerException e){}
catch(NumberFormatException e){}

try{
numberColor = new Color(Integer.parseInt(getParameter("fgcolor1"), 16));
}
catch(NullPointerException e){}
catch(NumberFormatException e){}

try{
numberColor = new Color(Integer.parseInt(getParameter("fgcolor1"), 16));
}
catch(NullPointerException e){}
catch(NumberFormatException e){}

resize(300, 300);
}

/*
* 绘制显示的主题部分
*/
public void update(Graphics g){
int xh, yh, xm, ym, xs, ys;
int s=0, m=10, h=10;
String today;

currentDate = new Date();

formatter.applyPattern("s");
try{

s = Integer.parseInt(formatter.format(currentDate));
}
catch(NumberFormatException n){
s = 0;
}
formatter.applyPattern("m");
try{
m = Integer.parseInt(formatter.format(currentDate));
}
catch(NumberFormatException n){
m = 10;
}
formatter.applyPattern("h");
try{
h = Integer.parseInt(formatter.format(currentDate));
}
catch(NumberFormatException n){
h = 10;
}

xs = (int)(Math.cos(s*Math.PI/30 - Math.PI/2) * 45 + xcenter);
ys = (int)(Math.sin(s*Math.PI/30 - Math.PI/2) * 45 + ycenter);
xm = (int)(Math.cos(m*Math.PI/30 - Math.PI/2) * 40 + xcenter);
ym = (int)(Math.sin(m*Math.PI/30 - Math.PI/2) * 40 + ycenter);
xh = (int)(Math.cos((h*30+m/2)*Math.PI/180 - Math.PI/2) * 30 + xcenter);
yh = (int)(Math.sin((h*30+m/2)*Math.PI/180 - Math.PI/2) * 30 + ycenter);

formatter.applyPattern("EEE MMM dd HH: mm: ss yyyy");
today = formatter.format(currentDate);
g.setFont(clockFaceFont);

g.setColor(getBackground());
if(xs != lastxs || ys != lastys){
g.drawLine(xcenter, ycenter, lastxs, lastys);
g.drawString(lastdate, 5, 125);
}
if(xm != lastxm || ym != lastym){
g.drawLine(xcenter, ycenter-1, lastxm, lastym);
g.drawLine(xcenter-1, ycenter, lastxm, lastym);
}
if(xh != lastxh || yh != lastyh){
g.drawLine(xcenter, ycenter-1, lastxh, lastyh);
g.drawLine(xcenter-1, ycenter, lastxh, lastyh);
}

g.setColor(numberColor);
g.drawString(today, 5, 125);
g.drawLine(xcenter, ycenter, xs, ys);
g.setColor(handColor);
g.drawLine(xcenter, ycenter-1, xm, ym);
g.drawLine(xcenter-1, ycenter, xm, ym);
g.drawLine(xcenter, ycenter-1, xh, yh);
g.drawLine(xcenter-1, ycenter, xh, yh);
lastxs = xs; lastys = ys;
lastxm = xm; lastym = ym;
lastxh = xh; lastyh = yh;
lastdate = today;
currentDate = null;
}

public void paint(Graphics g){
g.setFont(clockFaceFont);

g.setColor(handColor);
g.drawArc(xcenter-50, ycenter-50, 100, 100, 0, 360);
g.setColor(numberColor);
g.drawString("9", xcenter-45, ycenter+3);
g.drawString("3", xcenter+40, ycenter+3);
g.drawString("12", xcenter-5, ycenter-37);
g.drawString("6", xcenter-3, ycenter+45);

//
g.setColor(numberColor);
g.drawString(lastdate, 5, 125);
g.drawLine(xcenter, ycenter, lastxs, lastys);
g.setColor(handColor);
g.drawLine(xcenter, ycenter-1, lastxm, lastym);
g.drawLine(xcenter-1, ycenter, lastxm, lastym);
g.drawLine(xcenter, ycenter-1, lastxh, lastyh);
g.drawLine(xcenter-1, ycenter, lastxh, lastyh);
}

//
public void start(){
timer = new Thread(this);
timer.start();
}

public void stop(){
timer = null;
}

//
public void run(){
Thread me = Thread.currentThread();
while(timer == me){
try{
Thread.currentThread().sleep(100);
}
catch(InterruptedException e){}
repaint();
}
}

/* class ClockWindowEvent extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.exit(0);
}

ClockWindowEvent(){}

public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub

}
}*/

public static void main(String args[]){
Frame f = new Frame("知道是干什么的了吧~");
f.setSize(200, 180);
MyClock mc = new MyClock();
mc.init();
mc.start();
f.add(mc);
f.show();
}
}

-------------------------------------------------------
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孩儿跟住爹
2007-12-14 · 超过10用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:26.9万
展开全部
public class a extends Runnable{
Thread t;
public a()
{
t=new Thread(this);
JLabel co=new JLable();
}
public void run() {
for (; ; ) {
co.setText(new Date().toString());
}
}
}
主函数没写,楼主应该回吧,实现了那个run方法就OK了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式