首页 > 开发 > Java > 正文

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

2024-07-14 08:43:40
字体:
来源:转载
供稿:网友

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

构建:

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

运行效果:

Java,动态数字时钟

具体实现:

一、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();    }}

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


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表