国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java多線程編程制作電子時鐘

2019-11-26 14:50:09
字體:
來源:轉載
供稿:網友

  模擬一個電子時鐘,它可以在任何時候被啟動或者停止,并可以獨立的運行。

1.定義一個Clock類。它繼承Label類,并實現Runnable接口。這個類中有一個Thread類型的clocker域,以及start()和run()方法。在run()方法中,每隔一秒就把系統時間顯示為label的文本。

class Clock extends Label implements Runnable{  //定義Thread類型的clocker域  public Thread clocker=null;  public Clock()  {        //初始化時,把label設置為當前系統時間    //調用toString方法轉化為String類型    setText(new Date().toString());  }  //控制線程的啟動  public void start()  {    if(clocker==null)    {      //clocker通過Thread類構造方法得到的對象進行初始化,并將Clock類的當前對象作為參數      clocker=new Thread(this);      clocker.start();    }  }  //控制線程的停止  public void stop()  {    clocker=null;  }  //實現Runnable接口中的run()方法  public void run()  {    Thread currentThread=Thread.currentThread();    //判斷clocker是否是當前運行的線程    while(clocker==currentThread)    {            setText(new Date().toString());            try           {   //休眠1s鐘               clocker.sleep(1000);      }      catch (InterruptedException ie)      {        System.out.println("Thread error:"+ie);      }    }    }}

2.定義一個ClockFrame類。它繼承Frame類,并實現ActionListener接口。在這個類中定義start和stop按鈕來控制電子時鐘的運行。并且這個類有一個Clock類的域,把這個Clock類對象添加到ClockFrame類中顯示。

public class ClockFrame extends Frame implements ActionListener{  private Button start=new Button("Start");  private Button stop=new Button("Stop");  private Clock c=new Clock();  public ClockFrame()  {    super("電子時鐘");    //設置窗體使用流式布局    setLayout(new FlowLayout());    //添加按鈕并且為其注冊監聽器    add(start);    start.addActionListener(this);    add(stop);    stop.addActionListener(this);    //使用繼承WindowAdapter的匿名內部類來實現窗口的關閉    addWindowListener(new WindowAdapter()    {      public void windowClosing(WindowEvent we)      {System.exit(0);}    });    add(c);    //使構件在窗口中得到合理的安排。    pack();    setVisible(true);  }  //通過調用Clock對象中的方法,實現對事件的響應。  public void actionPerformed(ActionEvent ae)  {    if(ae.getSource()==start)    {      c.start();    }    else      if(ae.getSource()==stop)      c.stop();  }  public static void main(String[] args)  {    new ClockFrame();  }}

3、運行:

注:

需要導入的類:

import java.awt.*;import java.awt.event.*;import java.util.Date;

再給大家一個網友的做法,非常不錯

import java.awt.*;  import javax.swing.*;  import java.util.Date;   /*TimeDemo.java  * @src public class TimeDemo extends JFrame implements Runnable {     Thread clock;        public static void main(String[] args) {    TimeDemo td =new TimeDemo();    td.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //點擊可見窗口右上角的紅叉關閉     }        public TimeDemo(){     super("雪地漫步---java多線程數字時鐘"); //繼承父類構造方法,這里相當于Font("雪地漫步---java多線程數字時鐘");  setTitle("kk");  //這個則是子類的     this.setFont(new Font("Times New Roman",Font.BOLD,60));  //設置字體大小     this.go();    //自定義go方法,用于以后開啟線程     setBounds(400,300,300,100);     this.setVisible(true);    }      public void go(){    stop();     if(clock==null){    //線程執行的主題作為Thread類構造方法的參數。     clock=new Thread(this);     clock.start();     //開啟線程,實現run方法    }  }     public void run() {      while(true)   //讓線程一直進行    {  //repain()方法是來控制Graphics類的paint()方法的,repain()方法執行一次,即讓paint()方法執行一次        repaint();        try{        Thread.sleep(1000);   //參數是毫秒,1秒即1000毫秒       }catch(InterruptedException e){}      }     }     public void stop(){     clock=null;    }     public void paint(Graphics g){     String s="";     Date now=new Date();     int hour=now.getHours();                          int minute=now.getMinutes();     int second=now.getSeconds();     s=hour+":"+minute+":"+second;     g.setColor(Color.green);     Dimension dim=getSize();     g.fillRect(0, 0, dim.width, dim.height);     g.setColor(Color.red);     g.drawString(s, 20, 80);    }  } 

例子三:思路更加的巧妙,分享給大家

import java.awt.BorderLayout; import java.awt.Canvas; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.sql.Date; import java.text.SimpleDateFormat; import java.util.Calendar; import javax.swing.JFrame; import javax.swing.JPanel; class Clock extends Canvas implements Runnable{   /*   http://ohgrateboy.blog.163.com我的博客   */   private static final long serialVersionUID = 3660124045489727166L;   Thread t;   JFrame frame=new JFrame();   JPanel conPane;   String time;   int i=0;   Date timer;   public Clock(){     conPane=(JPanel)frame.getContentPane();     conPane.setLayout(new BorderLayout());     conPane.setSize(280,40);     conPane.setBackground(Color.white);     conPane.add(this,BorderLayout.CENTER);     t=new Thread(this);        //實例化線    t.start();    //調用線程         frame.setVisible(true);     frame.setSize(300, 150);     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   }   public void run(){     while(true){     try{       Thread.sleep(1000);          //休眠1秒鐘    }catch(InterruptedException e){       System.out.println("異常");     }     this.repaint(100);   }   }   public void paint(Graphics g){     Font f=new Font("宋體",Font.BOLD,16);     SimpleDateFormat SDF=new SimpleDateFormat("yyyy'年'MM'月'dd'日'HH:mm:ss");//格式化時間顯示類型    Calendar now=Calendar.getInstance();     time=SDF.format(now.getTime());    //得到當前日期和時間    g.setFont(f);     g.setColor(Color.orange);     g.drawString(time,45,25);   }   public static void main(String args[]){     new Clock();   } } 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 白朗县| 柏乡县| 蒙城县| 苗栗县| 昭通市| 额济纳旗| 米泉市| 南投市| 高尔夫| 荣成市| 会宁县| 鹿泉市| 安龙县| 辽宁省| 寿阳县| 普兰店市| 长丰县| 辉南县| 佛教| 泸水县| 大余县| 高青县| 侯马市| 胶州市| 临西县| 天长市| 罗平县| 九台市| 周宁县| 简阳市| 财经| 兴义市| 格尔木市| 曲松县| 遵义县| 右玉县| 锡林浩特市| 杭锦后旗| 石门县| 九龙城区| 江都市|