前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java实现动态数字时钟

Java实现动态数字时钟

作者头像
圆号本昊
发布2021-09-24 14:42:19
2K0
发布2021-09-24 14:42:19
举报
文章被收录于专栏:github@hornhuang

构建:

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

运行效果:

具体实现:

一、Clock类  

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

具体实现如下:

代码语言:javascript
复制
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类用于测试

代码语言:javascript
复制
public class ClockText{
	public static void main(String[] args) {
		new Clock();
	}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/12/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 构建:
  • 运行效果:
    • 具体实现:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档