当前位置: 代码迷 >> J2SE >> java线程的有关问题,请高手解决
  详细解决方案

java线程的有关问题,请高手解决

热度:239   发布时间:2016-04-24 02:25:30.0
java线程的问题,请高手解决。
模拟电子时钟,它可以在任何时候被启动或者停止,并可独立运行。这个类称为Clock类,它继承Label类。这个类有一个Thread类型的clocker域,以及start(),stop(),和run()方法,在run()方法的while循环中,每隔一秒就把系统时间显示为label文本。构造方法初始化时,把label设为系统的当前时间。
此题该如何用java编写。(严格按照上面的要求来写)

------解决方案--------------------
LZ给分。
Java code
import java.awt.Frame;import java.awt.Label;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.Locale;public class Test1 {        public static void main(String[] args) {            Clock clock = new Clock();            Frame f = new Frame();            f.setSize(300, 300);            f.add(clock);            clock.start();   //自动计时开始            f.setVisible(true);            try {                Thread.sleep(10000);                clock.close();   //10秒后计时停止            } catch (InterruptedException e) {                e.printStackTrace();            }                    }}class Clock extends Label {    Clocker cl;    public Clock() {        cl = new Clocker();    }        public void start() {        cl.start();    }        public void close() {        cl.setF();    }        class Clocker extends Thread {        Date time = null;        boolean f = true;        public void run() {            GregorianCalendar gc = new GregorianCalendar(Locale.CHINA);            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);            while(f) {                Clock.this.setText(sf.format(gc.getTime()));                try {                    Thread.sleep(1000);                    gc.set(Calendar.SECOND,gc.get(Calendar.SECOND)+1);                } catch (InterruptedException e) {                    e.printStackTrace();                }            }        }        public void setF() {            f = false;        }    }}
  相关解决方案