Java实现的动态数字时钟功能示例【显示世界时间】

 更新时间:2019年03月13日 11:48:13   作者:水中鱼之1999  
这篇文章主要介绍了Java实现的动态数字时钟功能,结合实例形式分析了java显示北京、纽约、伦敦等世界时间的相关日期时间运算操作技巧,需要的朋友可以参考下

本文实例讲述了Java实现的动态数字时钟功能。分享给大家供大家参考,具体如下:

构建:

1. Clock继承 JFrame 为运行页面
2. ClockText 测试类 创建 Clock 对象

运行效果:

具体实现:

一、Clock类 

  • 四个JPnal 三个放时间 最后一个放日期
  • 放时间的三个JPnal 分别加入 地点 时间 按钮
  • 最后一个按钮添加日期

具体实现如下:

public class Clock extends JFrame {
    private JPanel jPanelBeijing;
    private JPanel jPanelNewYork;
    private JPanel jPanelLondom;
    private JPanel jPanelDate;
    private boolean BeijingThreadFlag_IsStart = true;
    private boolean NewYorkThreadFlag_IsStart = true;
    private boolean LondonThreadFlag_IsStart = true;
    public Clock() {
        // TODO Auto-generated constructor stub
        jPanelBeijing = new JPanel();
        jPanelNewYork = new JPanel();
        jPanelLondom = new JPanel();
        jPanelDate = new JPanel();
        iniRelations();
        iniLayout();
        jFrameClick();
        setVisible(true);
        setSize(480, 225);
        setLocationRelativeTo(null);
    }
    private void iniLayout() {
        jPanelBeijing.setLayout(new GridLayout(3, 1));
        jPanelNewYork.setLayout(new GridLayout(3, 1));
        jPanelLondom.setLayout(new GridLayout(3, 1));
    }
    // 关系
    private void iniRelations() {
        this.add(BorderLayout.WEST, jPanelBeijing);
        this.add(BorderLayout.CENTER, jPanelNewYork);
        this.add(BorderLayout.EAST, jPanelLondom);
        this.add(BorderLayout.SOUTH, jPanelDate);
        Font placeFont = new Font("楷体", Font.BOLD, 36);
        JLabel jLabelBeijing = new JLabel("北京时间");
        jLabelBeijing.setFont(placeFont);
        jPanelBeijing.add(jLabelBeijing);
        setWestPanel();
        JLabel jLabelNewYork = new JLabel("纽约时间");
        jLabelNewYork.setFont(placeFont);
        jPanelNewYork.add(jLabelNewYork);
        setCenterPanel();
        JLabel jLabelLondon = new JLabel("伦敦时间");
        jLabelLondon.setFont(placeFont);
        jPanelLondom.add(jLabelLondon);
        setEastPanel();
        setDatePanel();
    }
    private void setWestPanel() {
        // add time for SouthPanel
        JLabel jLabelTime = new JLabel("加载中.");
        jLabelTime.setFont(new Font("宋体", Font.BOLD, 30));
        Timer timeAction = new Timer(1000, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                long timemillis = System.currentTimeMillis();
                // 转换日期显示格式
                SimpleDateFormat time = new SimpleDateFormat("HH:mm:ss ");
                jLabelTime.setText(time.format(new Date(timemillis)));
            }
        });
        timeAction.start();
        jPanelBeijing.add(jLabelTime);
        Button button = new Button("北京暂停");
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                if (BeijingThreadFlag_IsStart) {
                    timeAction.stop();
                    button.setLabel("北京继续");
                    BeijingThreadFlag_IsStart = false;
                } else {
                    timeAction.start();
                    button.setLabel("北京暂停");
                    BeijingThreadFlag_IsStart = true ;
                }
            }
        });
        jPanelBeijing.add(button);
    }
    private void setCenterPanel() {
        // add time for SouthPanel
        JLabel jLabelTime = new JLabel("加载中.");
        jLabelTime.setFont(new Font("宋体", Font.BOLD, 30));
        Timer timeAction = new Timer(1000, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                long timemillis = System.currentTimeMillis();
                // 转换日期显示格式
                SimpleDateFormat time = new SimpleDateFormat("HH:mm:ss ");
                jLabelTime.setText(time.format(new Date(timemillis - 13 * 60 * 60 * 1000)));
            }
        });
        timeAction.start();
        jPanelNewYork.add(jLabelTime);
        Button button = new Button("纽约暂停");
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                if (NewYorkThreadFlag_IsStart) {
                    timeAction.stop();
                    button.setLabel("纽约继续");
                    NewYorkThreadFlag_IsStart = false;
                } else {
                    timeAction.start();
                    button.setLabel("纽约暂停");
                    NewYorkThreadFlag_IsStart = true ;
                }
            }
        });
        jPanelNewYork.add(button);
    }
    private void setEastPanel() {
        // add time for SouthPanel
        // JLabel jLabelDate = new JLabel("Date");
        JLabel jLabelTime = new JLabel("加载中.");
        jLabelTime.setFont(new Font("宋体", Font.BOLD, 30));
        Timer timeAction = new Timer(1000, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                long timemillis = System.currentTimeMillis();
                // SimpleDateFormat date = new SimpleDateFormat("yyyy 年 MM 月 dd
                // 日 ");
                // jLabelDate.setText(" 当前日期: " + date.format(new
                // Date(timemillis)));
                SimpleDateFormat time = new SimpleDateFormat("HH:mm:ss ");
                jLabelTime.setText(time.format(new Time(timemillis - 8 * 60 * 60 * 1000)));
            }
        });
        timeAction.start();
        jPanelLondom.add(jLabelTime);
        Button button = new Button("伦敦暂停");
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                if (LondonThreadFlag_IsStart) {
                    timeAction.stop();
                    button.setLabel("伦敦继续");
                    LondonThreadFlag_IsStart = false;
                } else {
                    timeAction.start();
                    button.setLabel("伦敦暂停");
                    LondonThreadFlag_IsStart = true ;
                }
            }
        });
        jPanelLondom.add(button);
        // jPanelLondom.add(jLabelDate);
    }
    private void setDatePanel() {
        // add time for SouthPanel
        JLabel jLabelDate = new JLabel("加载中.");
        Timer timeAction = new Timer(1000, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                long timemillis = System.currentTimeMillis();
                 SimpleDateFormat date = new SimpleDateFormat("yyyy 年 MM 月 dd 日 ");
                 jLabelDate.setText(" 当前日期: " + date.format(new Date(timemillis)));
             }
        });
        timeAction.start();
        jPanelDate.add(jLabelDate);
    }
    private void jFrameClick(){
        setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);//设置不默认关闭
        addWindowListener(new WindowListener() {
            @Override
            public void windowOpened(WindowEvent e) {
                // TODO Auto-generated method stub
            }
            @Override
            public void windowIconified(WindowEvent e) {
                // TODO Auto-generated method stub
            }
            @Override
            public void windowDeiconified(WindowEvent e) {
                // TODO Auto-generated method stub
            }
            @Override
            public void windowDeactivated(WindowEvent e) {
                // TODO Auto-generated method stub
            }
            @Override
            public void windowClosing(WindowEvent e) {
                // TODO Auto-generated method stub
                int x = JOptionPane.showConfirmDialog(null, "确认退出么?", "友情提示", JOptionPane.OK_CANCEL_OPTION,
                        JOptionPane.WARNING_MESSAGE);
                if (x == 0) {
                    System.exit(0);
                }
            }
            @Override
            public void windowClosed(WindowEvent e) {
                // TODO Auto-generated method stub
            }
            @Override
            public void windowActivated(WindowEvent e) {
                // TODO Auto-generated method stub
            }
        });
    }
}

二、创建ClockText类用于测试

public class ClockText{
    public static void main(String[] args) {
        new Clock();
    }
}

PS:这里再为大家推荐几款时间及日期相关工具供大家参考使用:

在线世界各地时间查询:
http://tools.jb51.net/zhuanhuanqi/worldtime

Unix时间戳(timestamp)转换工具:
http://tools.jb51.net/code/unixtime

在线日期/天数计算器:
http://tools.jb51.net/jisuanqi/date_jisuanqi

更多关于java相关内容感兴趣的读者可查看本站专题:《java日期与时间操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

相关文章

  • Spring MVC实现一次简单的CRUD示例

    Spring MVC实现一次简单的CRUD示例

    这篇文章主要介绍了Spring MVC实现一次简单的CRUD示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Java中获取年份月份的几种常见方法

    Java中获取年份月份的几种常见方法

    这篇文章主要给大家介绍了关于Java中获取年份月份的几种常见方法,在开发应用程序时,经常需要获取当前的年、月、日,并以特定格式进行展示或处理,需要的朋友可以参考下
    2023-09-09
  • IDEA 重新导入依赖maven 命令 reimport的方法

    IDEA 重新导入依赖maven 命令 reimport的方法

    这篇文章主要介绍了IDEA 重新导入依赖maven 命令 reimport的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • java开发分布式服务框架Dubbo暴露服务过程详解

    java开发分布式服务框架Dubbo暴露服务过程详解

    这篇文章主要为大家介绍了java开发分布式服务框架Dubbo暴露服务的过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • 详解Maven JAR包冲突问题排查及解决方案

    详解Maven JAR包冲突问题排查及解决方案

    这篇文章主要介绍了Maven JAR包冲突问题排查及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Java中小球碰撞并使用按钮控制数量实例代码

    Java中小球碰撞并使用按钮控制数量实例代码

    这篇文章主要给大家介绍了关于Java中小球碰撞并使用按钮控制数量的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-12-12
  • Spring AOP实现复杂的日志记录操作(自定义注解)

    Spring AOP实现复杂的日志记录操作(自定义注解)

    Spring AOP实现复杂的日志记录操作(自定义注解),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • SpringBoot+ruoyi框架文件上传和下载的实现

    SpringBoot+ruoyi框架文件上传和下载的实现

    文件的上传和下载功能,是项目开发过程中比较常见的业务需求,本文主要介绍了SpringBoot+ruoyi框架文件上传和文件下载的实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • Java中ArrayList在foreach里remove的问题详析

    Java中ArrayList在foreach里remove的问题详析

    这篇文章主要给大家介绍了关于Java中ArrayList在foreach里remove问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2018-09-09
  • 面试初级Java开发问到Arrays

    面试初级Java开发问到Arrays

    这篇文章主要介绍了Java Arrays工具类用法,结合实例形式分析了java Arrays工具类针对数组元素修改、复制、排序等操作使用技巧与相关注意事项,需要的朋友可以参考下
    2021-07-07

最新评论