日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 电子时钟_java多线程编程制作电子时钟

發布時間:2023/12/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 电子时钟_java多线程编程制作电子时钟 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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();

}

}

總結

以上是生活随笔為你收集整理的java 电子时钟_java多线程编程制作电子时钟的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。