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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值