多线程编程:编写一个图形界面程序,让其中有一个线程能在界面上“实时” 显示系统当前时间, 另让一个线程可以在界面上提示当前系统时间下,用户改干什么

题目:
多线程编程题目 2:编写一个图形界面程序,运行之后,让其中有一个线程能在界面上“实时” 显示系统当前时间(精确到秒获取时间可查询 java.util.Calendar 类,它包含了多个用于获得系统时间 的函数) 。另让一个线程可以在界面上提示当前系统时间下用户该做什么工作(例如当程序判断出系统时 间现在是 8:00 到 9:00,则提示用户该上课;现在是 23:00 到 8:00,则提示用户该休息。



import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class Xiancheng_2 extends JFrame{
    private JLabel lblTime = new JLabel();
    private JLabel lblDo = new JLabel(); 
    public Xiancheng_2(){
        this.setLayout(new GridLayout(2, 1));
        add(lblTime);
        add(lblDo);
        new TimeThread().start();
        new DoThread().start();
    }
  private class TimeThread extends Thread{
        public void run(){
            while (true){
                Calendar calendar = new GregorianCalendar();
                lblTime.setFont(new Font("宋体",Font.PLAIN,23));
                lblTime .setForeground(Color.blue);
                lblTime.setText(String.format("现在是:%d年%02d月%02d日 %02d:%02d:%02d", 
                        calendar.get(Calendar.YEAR),
                        calendar.get(Calendar.MONTH) + 1, 
                        calendar.get(Calendar.DATE),
                        calendar.get(Calendar.HOUR_OF_DAY),    
                        calendar.get(Calendar.MINUTE),
                        calendar.get(Calendar.SECOND)));
                try {
                    Thread.sleep(1000);
                }
                catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }  
   private class DoThread extends Thread {
        public void run(){
            while (true) {
                Calendar calendar = new GregorianCalendar();
                int hour = calendar.get(Calendar.HOUR_OF_DAY);
                lblDo.setForeground(Color.blue);
            	lblDo.setFont(new Font("宋体",Font.PLAIN,23));
                if (8 <= hour && hour < 9){
                    lblDo.setText("消息:该上课了");
                } 
                else if (23 <= hour || hour < 8){
                    lblDo.setText("消息:该休息了");
                }
                else{
                    lblDo.setText("消息:无");
                }
                try {
                    Thread.sleep(1000);
                }catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }  
    public static void main(String[] args){
        EventQueue.invokeLater(new Runnable() {
                public void run(){
                    JFrame frame = new Xiancheng_2();
                    frame.setSize(500, 300);
                    frame.setVisible(true);
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                }
            });
    }
}
  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值