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程序设计有所帮助。

以上是 Java实现的动态数字时钟功能示例【显示世界时间】 的全部内容, 来源链接: utcz.com/z/354634.html

回到顶部